Fragment崩溃,再启动重叠问题说明

本文介绍了一种在Android应用中修复Fragment重叠的方法。当应用崩溃后重启,由于Fragment的状态被保留,会导致Fragment显示异常。文章提供了两种解决方案:一是重写onSaveInstanceState方法阻止状态保存;二是使用Tag标记Fragment并在onCreate方法中处理,避免重叠。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Fragment崩溃,再启动重叠

今天项目在测试过程中,在极端滑动Recyclerview情况下,App会崩溃。再启动App进入首页,发现之前的Fragment一直存在,首页的Fragment切换效果无法实现。

在查阅资料后,发现问题,并将之实现修复。

  • 产生原因
    1、首页Fragment在切换时,使用了show()和hide()方法。当出现崩溃时,首页MainActivity被销毁,此时,onSaveInstanceState() 方法会将相关数据进行保存。
    2、重启App进入MainActivity中,onCreate(Bundle savedInstanceState) 方法,通过savedInstanceState 将之前保存的数据进行了恢复。
    3、这种情况下,崩溃前show的Fragment 通过addFragment方式重新加载,从而导致fragment的show()和hide()方法失效,从而出现重叠效果。
  • 解决方法
    方法1:重写 onSaveInstanceState(Bundle outState) 方法
 protected void onSaveInstanceState(Bundle outState) {
//        super.onSaveInstanceState(outState);  // 重写该方法,并注释掉该行。
    }
方法2: 
未雨绸缪,在通过FragmentTransaction的 add() 方法添加Fragment时,使用带 Tag 方法对所有添加的fragment进行标记。
public abstract FragmentTransaction add(@IdRes int containerViewId, Fragment fragment,
        @Nullable String tag);
然后,在onCreate(Bundle savedInstanceState)方法中,对savedInstanceState进行处理!从而解决掉Fragment重叠问题
(https://img-blog.youkuaiyun.com/20161107160615076)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值