Prevent Fragment recovery in Android

前端 未结 7 1790
星月不相逢
星月不相逢 2020-12-07 22:53

We are using Fragments and we don\'t need them to be automatically recovered when the Activity is recreated. But Android every time when Activity::onCreate(Bundle save

7条回答
  •  广开言路
    2020-12-07 23:31

    @goRGon 's answer was very useful for me, but such use cause serious problems when there is some more information you needs to forward to your activity after recreate.

    Here is improved version that only removes "fragments", but keep every other parameters.

    ID that is removed from bundle is part of android.support.v4.app.FragmentActivity class as FRAGMENTS_TAG field. It may of course change over time, but it's not expected.

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(createBundleNoFragmentRestore(savedInstanceState));
    }
    
    /**
     * Improve bundle to prevent restoring of fragments.
     * @param bundle bundle container
     * @return improved bundle with removed "fragments parcelable"
     */
    private static Bundle createBundleNoFragmentRestore(Bundle bundle) {
        if (bundle != null) {
            bundle.remove("android:support:fragments");
        }
        return bundle;
    }
    

提交回复
热议问题