解决APP中fragment重叠问题
Posted shuijilove
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决APP中fragment重叠问题相关的知识,希望对你有一定的参考价值。
由于内存重启,导致的frgament重叠,其原因就是FragmentState没有保存Fragment的显示状态,即mHidden
,导致页面重启后,该值为默认的false,即show状态,所以导致了Fragment的重叠。
那么解决方案就是自己写一些代码去保存fragment的显示状态。
当发生内存重启的时候,fragment会触onSaveInstanceState方法,那么我们可以在这个方法内部去保存当前状态,然后在onCreate中进行取值回复,代码如下:
public class BaseFragment extends Fragment { private static final String STATE_SAVE_IS_HIDDEN = "STATE_SAVE_IS_HIDDEN"; @Override public void onCreate(@Nullable Bundle savedInstanceState) { ... if (savedInstanceState != null) { boolean isSupportHidden = savedInstanceState.getBoolean(STATE_SAVE_IS_HIDDEN); FragmentTransaction ft = getFragmentManager().beginTransaction(); if (isSupportHidden) { ft.hide(this); } else { ft.show(this); } ft.commit(); } @Override public void onSaveInstanceState(Bundle outState) { outState.putBoolean(STATE_SAVE_IS_HIDDEN, isHidden()); } }
参考开源项目:https://github.com/YoKeyword/Fragmentation
参考文章:
-
Fragment全解析系列(一):那些年踩过的坑
http://www.jianshu.com/p/d9143a92ad94
-
Fragment全解析系列(二):正确的使用姿势
http://www.jianshu.com/p/fd71d65f0ec6
-
Fragment之我的解决方案:Fragmentation
http://www.jianshu.com/p/38f7994faa6b
-
android Fragment 你应该知道的一切
http://blog.csdn.net/lmj623565791/article/details/42628537
以上是关于解决APP中fragment重叠问题的主要内容,如果未能解决你的问题,请参考以下文章
Android:MainActivity/Fragment 中的 ListView / GridView 重叠工具栏
如何用 Android 数据绑定替换 androidx.fragment.app.FragmentContainerView 中的片段