我正在尝试对带有片段的选项卡遵循这个想法,以使 FragmentActivity 托管两个 Fragment 选项卡。此外,我在 FragmentActivity 上有一个按钮,该按钮在 Activity 上调用 startActivityForResult() 以将项目添加到子 Fragment 选项卡之一。
问题是,当 Activity 完成时,FragmentActivity 上的回调 onActivityResult() 代码会抛出一个
“java.lang.RuntimeException: 将结果 ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} 传递给活动失败:java.lang.IllegalStateException: 之后无法执行此操作onSaveInstanceState。”
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
MyData d = data.getParcelableExtra("data");
FragmentManager fm = getSupportFragmentManager();
if (fm.findFragmentByTag(id) == null) {
fm.beginTransaction().replace(R.id.<my_container>, new MyFragment(), id)
.commitAllowingStateLoss();
}
MyFragment f = (MyFragment)fm.findFragmentByTag(id);
f.addData(d);
}
}
}
这里的问题是 fm.findFragmentByTag(id) 第二次调用后 f 为空。我也尝试调用 mTabsAdapter.getItem(mTabHost.getCurrentTab()); 但这会返回一个 Fragment,其中的 ArrayAdapter 为空。
我确定我做错了什么,但不知道是什么。有人可以向我解释我应该如何处理这种情况吗?
谢谢你。