在我的片段中onActivityResult没有在startActivityForResult之后调用。我已经尝试过以下内容: 1)在startActivityResult
之前添加getParentFragment,getActivity2)在清单上添加了android:configChanges =“orientation | screenSize”
3)onActivityResult is not being called in Fragment
4)在ZbarScanner活动中检查了finish()方法
Intent dataIntent = new Intent();
dataIntent.putExtra(SCAN_RESULT, symData);
dataIntent.putExtra(SCAN_RESULT_TYPE, sym.getType());
setResult(Activity.RESULT_OK, dataIntent);
finish();
5)错误 - [ResultInfo {who = null,request = 196609,result = -1,data = Intent {(has extras)}}]} checked intent的值为null,我们正在传递
if (isCameraAvailable()) {
Intent intent = new Intent(this.getActivity(), ZBarScannerActivity.class);
intent.putExtra(ZBarConstants.SCAN_MODES, new int[]{Symbol.QRCODE});
startActivityForResult(intent, 1);
Toast.makeText(getActivity(), "inside case", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show();
}
---- onActivityResult ------
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Bundle bundle = data.getExtras();
switch (requestCode) {
case ZBAR_SCANNER_REQUEST:
case ZBAR_QR_SCANNER_REQUEST:
if (resultCode == getActivity().RESULT_OK) {
Toast.makeText(getActivity(), "Scan Result = " + data.getStringExtra(ZBarConstants.SCAN_RESULT), Toast.LENGTH_SHORT).show();
} else if (resultCode == getActivity().RESULT_CANCELED && data != null) {
String error = data.getStringExtra(ZBarConstants.ERROR_INFO);
if (!TextUtils.isEmpty(error)) {
Toast.makeText(getActivity(), error, Toast.LENGTH_SHORT).show();
}
}}
答案 0 :(得分:2)
我在MainActivity上调用了onActivityResult,并且没有调用.so删除了switch case。现在它正在工作
switch (requestCode) {
case ZBAR_SCANNER_REQUEST:
case ZBAR_QR_SCANNER_REQUEST:
答案 1 :(得分:0)
片段onActivityResult
是一个非常常见且已知的问题。我已经用一种方式解决了它,也可能有其他方法。
从Fragment
移动到Activity
时设置标记。
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment,"tag").commit();
现在在onActivityResult
的{{1}}中写下以下代码。
Activity
答案 2 :(得分:0)
在片段中使用FragmentPagerAdapter
时,我遇到了类似的问题。问题是我用片段PagerAdapter
初始化了我的FragmentManager
,我替换了:
new MyPagerAdapter(getChildFragmentManager());
与
new MyPagerAdapter(getFragmentManager());
因此,可能需要检查您正在使用的FragmentManager。我对这种方法并不是百分之百满意,因为调用片段FragmentManager
似乎是正确的。但我还没有时间进一步检查它。