0

私は、フラグメントを含むタブが 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 を返します。

私は何か間違ったことをしていると確信していますが、何がわかりません。このシナリオにどのようにアプローチすればよいか説明してもらえますか?

ありがとうございました。

4

1 に答える 1