3

私はAndroidアプリケーションを開発していて、ベクターフラグメントにあるフラグメントを保存したいと思っています。onSaveIstanceStateでputFragmentを使用すると、システムはIllegalStateExceptionをスローします

@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        // Salviamo lo stato 


        //salvo all fragment
        for(int i=0;i<fragments.size();i++)
            getSupportFragmentManager().putFragment(outState, Integer.toString(i), fragments.get(i));

    }

これはlogcatです:

09-13 10:38:10.230: E/AndroidRuntime(24089): java.lang.IllegalStateException: Fragment GenericPageFragment{417716e0} is not currently in the FragmentManager
09-13 10:38:10.230: E/AndroidRuntime(24089):    at android.support.v4.app.FragmentManagerImpl.putFragment(FragmentManager.java:516)
09-13 10:38:10.230: E/AndroidRuntime(24089):    at it.intects.dashboard.droid.BaseActivity.onSaveInstanceState(BaseActivity.java:180)
09-13 10:38:10.230: E/AndroidRuntime(24089):    at android.app.Activity.performSaveInstanceState(Activity.java:1113)
09-13 10:38:10.230: E/AndroidRuntime(24089):    at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1188)

なんで ?このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

2

savedInstanceState()が呼び出された後は、フラグメントトランザクションを実行できません。

アクティビティが戻ると、アクティビティは最後にアタッチされたフラグメントを復元します。

また、フラグメントを使用してアクションを実行する場合は、次を使用します。

getSupportFragmentManager().beginTransaction().add(R.layout.container,new MyFragment(), "fragment_tag").commit();

フラグメントに関する非常に優れたチュートリアル

于 2012-09-13T08:48:20.743 に答える