请注意,这个问题与以下问题不重复:
我的
我的猜测是,由于方向改变,父级被销毁了,然后在重新创建之后,无法找到最初调用
- https://stackoverflow.com/questions/19006776/onactivityresult-not-working-with-fragments
- onActivityResult not working on fragments
我的
Fragment
中的onActivityResult
方法在不切换方向时会被调用。然而,如果我按照以下步骤操作,它就不会被调用:
- 在FragmentActivity中加载片段。
- 从片段:
startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), Constants.REQ_CODE_IMAGE_CAPTURE);
- 等待相机加载。
- 切换方向。
- 拍照并点击勾号。
onActivityResult
仍会在父FragmentActivity
中被调用。但是,由于我收到了这个警告:
W/FragmentActivity(4418): Activity result no fragment exists for index: 0x22d73
我的猜测是,由于方向改变,父级被销毁了,然后在重新创建之后,无法找到最初调用
startActivityForResult
的Fragment
。这是框架的一个bug吗?如何解决这个问题?
编辑:根据大家的要求,添加了更多代码。
FragmentActivity.java:
...
fragment = new ExampleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace (R.id.mainContentView, fragment);
if (clearBackStack) {
// clear the back stack
while (getSupportFragmentManager().popBackStackImmediate ());
// add the current transaction to the back stack
transaction.addToBackStack (null);
}
else {
transaction.addToBackStack(null);
}
transaction.commit();
...
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
}
ExampleFragment.java:
Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePicture, Constants.REQ_CODE_IMAGE_CAPTURE);
...
@Override
public void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch (requestCode) {
case Constants.REQ_CODE_IMAGE_CAPTURE:
// handle added image
}
}