方法一

通过注释掉这句话,这样主 Activity 因为种种原因被回收的时候就不会保存之前的 fragment state

@OverrideprotectedvoidonSaveInstanceState(Bundle outState) {//如果用以下这种做法则不保存状态,再次进来的话会显示默认tab//总是执行这句代码来调用父类去保存视图层的状态//super.onSaveInstanceState(outState);}
方法二、(推荐使用)

重写onAttachFragment,重新让新的Fragment指向了原本未被销毁的fragment,它就是onAttach方法对应的Fragment对象

@Override    public void onAttachFragment(Fragment fragment) {        if (tab1 == null && fragment instanceof Tab1Fragment)            tab1 = fragment;        if (tab2 == null && fragment instanceof Tab2Fragment)            tab2 = fragment;        if (tab3 == null && fragment instanceof Tab3Fragment)            tab3 = fragment;        if (tab4 == null && fragment instanceof Tab4Fragment)            tab4 = fragment;    }
方法三

同样是阻止系统恢复Fragment state,在FragmentActivity保存所有Fragment状态前把Fragment从FragmentManager中移除掉。

protected void onSaveInstanceState(Bundle outState) {        FragmentTransaction transaction = fm.beginTransaction();        transaction.remove(tab1);        transaction.remove(tab2);        transaction.remove(tab3);        transaction.remove(tab4);        transaction.commitAllowingStateLoss();        super.onSaveInstanceState(outState);    }

更多相关文章

  1. android横竖屏切换、键盘推出状态改变的处理
  2. Android 完全退出当前应用程序的四种正确方法
  3. Handler 使用方法详解
  4. Linux下的两种timer方法 (Android 下NDK开发)
  5. Android中VideoView播放当前工程中视频文件的方法
  6. Android Studio 中报错 程序包org.apache.http不存在 的解决方法
  7. Android中使用Makefile编译程序和库的方法
  8. Android编程获取网络连接状态及调用网络配置界面
  9. Google地图(Map)API在J2ME中使用方法

随机推荐

  1. cordova platform add android 报错问题
  2. Android开源框架
  3. Android TouchEvent处理机制
  4. android使用Leaks检测内存泄漏
  5. Android 布局讲解
  6. android studio 将文件打包成jar文件
  7. Android(安卓)-- 距离感应器控制屏幕灭屏
  8. -----------关于android屏幕保护---屏幕
  9. Android TextView Button setPadding不起
  10. java拷贝文件夹和android设置文件权限