我创建了一个应用程序,向用户呈现一个对话框 fragment ,其中包含两个选项:是
和否
。
如果用户选择"is",应用程序将调用设备上安装的 Zxing barscan 应用程序,并返回结果。
现在,我有了这项工作的概念证明。然而,这个概念证明使用了一个简单的 Activity 。因此,我可以使用 Activity 而不是对话框 fragment 来实现此 Barscan 结果。
概念验证中使用的代码如下:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//retrieve scan result
IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanningResult != null) {
String scanContent = scanningResult.getContents();
String scanFormat = scanningResult.getFormatName();
formatTxt.setText("FORMAT: " + scanFormat);
contentTxt.setText("CONTENT: " + scanContent);
}
else{
Toast toast = Toast.makeText(getApplicationContext(),
"No scan data received!", Toast.LENGTH_SHORT);
toast.show();
}
}
此代码不适用于对话框 fragment 。我一直在寻找并发现this问题。
但是它不会集成,因为我无法访问 requestCode、resultCode 或所需的 Intent ,并且对如何执行此操作感到非常困惑。
最佳答案
您的 fragment 应该通过 startActivityForResult
启动 Activity,而不是 getActivity().startActivityForResult
在 onActivityResult
的 Activity 中调用 super.onActivityResult
并在 onActivityResult
的 fragment 中,您可以放置您在此处发布的代码。
更多信息原因:
关于Android 对话框 fragment 和 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24699207/