Android fragment 重叠问题——通过hide,show方式导致的解决方法
来源:互联网 发布:股票t0交易平台源码 编辑:程序博客网 时间:2024/06/06 15:49
转载与http://blog.csdn.net/u014391013/article/details/42497575
最近在做项目的时候,遇到了fragment重叠的问题。具体的情况是,我在一个fragment中,通过add的到FragmentTransaction的方式,又放了四个子fragment allFrg,movieFrg,newsFrg,otherFrg。当我点击allFrg对应tab键时,通过hide隐藏其他三个fragment,通过show来显示allFrg。正常情况下显示是对的,问题就在我切换他其他的app,操作一会之后,再回到当前的app,有很大几率会出现fragment重叠的现象。
通过搜集相关资料,我找到了原因,在我切换到其他app的时候,fragment所在activity已经被销毁。并且通过
@Override
public
void
onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
Log.v(
"LH"
,
"onSaveInstanceState"
+outState);
super
.onSaveInstanceState(outState);
}
这个方法保存了相关的数据。
当我再次回到这个app的时候,通过onCreate中的参数savedInstanceState恢复了之前的fragment。此时的FragmentTransaction中的相当于又再次add了fragment进去的,之前保存的fragment也还在。hide()和show()方法对之前保存的fragment已经失效了。所以出现了重叠的现象。
解决方法如下,在进入onCreate函数时,先去判断savedInstanceState是否为null,如果不为null,则表示里面有保存这四个fragment。则不再重新去add这四个fragment,而是通过Tag从前保存的数据中直接去读取。相关代码如下:
//FragmentManager fManager;
@Override
public
void
onCreate(Bundle savedInstanceState) {
fManager = getFragmentManager();
if
(savedInstanceState !=
null
) {
allFrg = (AllOfficialAccountFragment) fManager.findFragmentByTag(
"allFrg"
);
movieFrg = (MovieOfficialAccountFragment) fManager.findFragmentByTag(
"movieFrg"
);
newsFrg = (NewsOfficialAccountFragment) fManager.findFragmentByTag(
"newsFrg"
);
otherFrg = (OtherOfficialAccountFragment) fManager.findFragmentByTag(
"otherFrg"
);
}
super
.onCreate(savedInstanceState);
}
这样子仍是对之前保存的fragment操作,成功解决了重叠的问题。
///////////////////////////////////////////deadline//////////////////////////////////////////////////////////////
通过上面的方法,在我的应用中,貌似也没有能够很好的解决问题。
另外一个思路是,直接在包含Fragment的Activity中复写
public
void
onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
//Log.v("LH", "onSaveInstanceState"+outState);
//super.onSaveInstanceState(outState); //将这一行注释掉,阻止activity保存fragment的状态
}
- Android fragment 重叠问题——通过hide,show方式导致的解决方法
- Android fragment 重叠问题——通过hide,show方式导致的解决方法
- Android fragment 重叠问题——通过hide,show方式导致的解决方法
- Android fragment 重叠问题——通过hide,show方式导致的解决方法(未解决)
- Android fragment 重叠问题——通过hide,show方式导致的解决方法
- Android fragment 重叠问题—通过hide,show方式导致的解决方法
- 通过hide,show方式导致的fragment 重叠问题
- fragment重叠问题(add hide show方式)
- 关于Activity加载Fragment切换Show和Hide重叠问题
- 多个Fragment使用show和hide来切换时的画面重叠的问题
- 关于Fragment的hide和show以及重启后重叠的问题
- 解决当使用hide()和show()在多个Fragment 切换时,出现的重叠问题
- Android Fragment使用hide和show方法的问题
- Android fragment 重叠问题的解决方法
- Android fragment 重叠问题的解决方法
- Android fragment 重叠问题的解决方法
- Android fragment 重叠问题的解决方法
- Android中Fragment的Hide和Show
- 15 电气 李少振 十进制化十六进制程序代码
- Mysql初始化root密码和允许远程访问
- 关于action默认执行execute()方法一点想法
- vb
- 大数据管理:数据集成的技术、方法与最佳实践 读书笔记二
- Android fragment 重叠问题——通过hide,show方式导致的解决方法
- SpringMVC中输出json
- jQuery 获取当前节点的html包含当前节点的方法
- BTrace原理之 -- VM Attach API
- document.write直接写入 HTML 输出流
- 小圆点drawable布局文件
- 15电气李书鹏4月28日VB作业(2)
- 数据迁移 flyway
- 二进制 120