解决当使用hide()和show()在多个Fragment 切换时,出现的重叠问题

  • Post author:
  • Post category:其他


解决当使用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 版权协议,转载请附上原文出处链接和本声明。