Fragment中调用getActivity概率性为null的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxl1173558248/article/details/81316380

Activity都可能会被系统回收然后重建,但Fragment并不会随着Activity的回收而被回收,创建的所有Fragment会被保存到Bundle里面,从而导致Fragment丢失对应的Activity。

两种解决办法:

   1、不保存fragment的状态:在MyActivity中重写onSaveInstanceState方法,将super.onSaveInstanceState(outState);注释掉,让其不再保存Fragment的状态,达到fragment随MyActivity一起销毁的目的。

   2、重建时清除已经保存的fragment的状态:在恢复Fragment之前把Bundle里面的fragment状态数据给清除。方法如下:

        if(savedInstanceState!= null)

        {
            String FRAGMENTS_TAG = "Android:support:fragments";
            savedInstanceState.remove(FRAGMENTS_TAG);

        }

猜你喜欢

转载自blog.csdn.net/zxl1173558248/article/details/81316380