私は、フラグメントを含むタブが 2 つの Fragment タブをホストする FragmentActivity を持つというこの考えに従おうとしています。さらに、アクティビティの startActivityForResult() を呼び出して子 Fragment タブの 1 つに項目を追加する FragmentActivity のボタンがあります。
問題は、アクティビティが終了すると、FragmentActivity のコールバック onActivityResult() コードが
"java.lang.RuntimeException: アクティビティへの結果 ResultInfo{who=null, request=1, result=-1, data=Intent { (extras) }} の配信に失敗しました: java.lang.IllegalStateException: Can not perform this action after after 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) を 2 回目に呼び出した後に f が null になることです。また、mTabsAdapter.getItem(mTabHost.getCurrentTab()); を呼び出してみました。しかし、それは ArrayAdapter が null である Fragment を返します。
私は何か間違ったことをしていると確信していますが、何がわかりません。このシナリオにどのようにアプローチすればよいか説明してもらえますか?
ありがとうございました。