解决当使用hide()和show()在多个Fragment 切换时,出现的重叠问题
最近在做一个android 项目,需要实现在同一个Activity之间切换的功能(类似于微信)。然而,在实现后,发现会出现Fragment重叠的问题。参考网上的解决方法,解决了此问题,分享给大家。
当该Activity由于长时间占用内存或者由于内存不足时,而被系统收回内存,就容易出现Fragment重叠的问题。
解决方法
出现上述问题的原因是,当由于某些原因,系统销毁掉该Activity后,重新启动该Activity而出现重叠问题。那么,我们可以利用onSaveInstanceState()函数的特性,当Activity被系统销毁掉时,保存当前Activity中显示Fragment的TAG值。若启动时,再show被保存TAG的Fragment。
注意:onSaveInstanceState()函数并不是生命周期方法,只有在应用遇到意外情况(如内存不足等),而被系统销毁时,才会调用该方法。而当用户按back键退出时,不会调用该方法。
现在,解决这个问题的主要思路有了,我们看看具体如何实现。
1. 为每个Fragment设置TAG值。
private void setSelect(int i) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
hideFragment(transaction);
// setTab(i);
// mViewPager.setCurrentItem(i);
// 把图片设置为亮的
// 设置内容区域
版权声明:本文为nxiangbo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。