Fragment各种问题
来源:互联网 发布:关于中医的软件 编辑:程序博客网 时间:2024/05/17 23:48
1.Fragment不重复加载问题
开始使用replace方法来添加,后面发现replace相当于先remove然后在add,是为了方便加载新fragment时抛弃前一个fragment的简单方法。后面就改用add、hide和show来解决,然后在onHiddenChanged(boolean hidden)中知道fragment切换后是显示还是隐藏。
2.内存回收后在进入不显示问题
Fragment由FragmentManager来管理,而不由FragmentActivity来管理。所以FragmentActivity被回收(比如长时间不使用被回收或者使用清理内存的软件等)时,fragment不一定被销毁,它在FragmentManager中还是存在引用的。FragmentActivity被销毁时会调用onSaveInstanceState方法,如果重写此方法,注释掉super.onSaveInstanceState(outState),那么fragment也将会被回收,但注释掉此方法可能会引起其他保存状态的相关问题。
当FragmentActivity被回收后,我们又点击进入时,我们一般的处理情况就是重新生成fragment,这就造成问题了。之前FragmentManager中的fragment引用没有被销毁,这时又重新创建一个然后添加,造成不显示或者显示空白等多种坑爹的情况。解决的办法就是在onCreate(Bundle arg0)是判断Bundle 是否为空,不为空的情况就是FragmentActivity被回收又重新进入的情况。然后在不为空个情况下在FragmentManager中重新找到或者销毁所有的fragment引用。
我用的是重新找到frament,在add时调用FragmentTransaction.add(R.id.content,fragment,"当前fragment的tag"),在onCreate(Bundle arg0)方法中:
// activity被销毁,重新找到fragment
if (arg0 != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment fragment1 = getSupportFragmentManager().findFragmentByTag("要查找的fragment的tag1");
......
// 找到后先隐藏
if(fragment1 != null){
ft.hide(fragment);
}
.....
ft.commitAllowingStateLoss();
.....
}
- Fragment各种问题
- 网络电台研究(3)Fragment系统学习,解决各种问题
- Fragment 嵌套 Fragment 问题
- Fragment问题
- Fragment中嵌套Fragment问题
- 各种问题
- 各种问题!!!
- 各种问题
- Android Fragment解析以及Fragment中碰到的各种坑
- 自定义控件+ViewPage+Fragment....各种收获
- viewpager和fragment的各种情景。。
- Fragment 各种状态下的生命周期
- Fragment+ScrollView+ListView冲突各种解决方法
- Fragment 在各种情况下的生命周期
- Android fragment onActivityResult 问题
- Fragment和Sqlite问题
- Fragment使用问题
- Fragment的布局问题
- 怎么修改Word2013主题颜色
- pat 1087. All Roads Lead to Rome (30)
- Accord.NET 网址
- listview+edittext完美解决方案
- linux 命令
- Fragment各种问题
- 微软环回网卡安装
- 2016年必将是东方机械网腾飞的一年
- java线程池异常处理
- 报警啦! session跟reload的一个坑
- 基本排序_基数排序_Java实现
- 【Ajax】ajax上传文件及进度条的实现
- struts2单文件和多文件的上传和下载
- 百度任玉刚写的对学习Android的理解