Fragment hide show方法后的生命周期方法调用

在Android开发中,Fragment的show()和hide()方法常用于复用。当Fragment从隐藏状态恢复到显示时,开发者可能期望在onResume()中加载数据。然而,在一次开发实践中,发现onResume()并未触发数据重新加载。这个问题提示我们,理解Fragment的生命周期对于正确处理显示状态变化至关重要。

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

在实际开发项目中,经常用到 Fragment,并且为了复用Fragment,所以基本上就是用show()和hide方法来复用Fragment。在Fragment从隐藏到显示,可能会做一些处理,例如数据重新请求加载等等。今天在开发中遇到一个问题,fragment再次显示到前端界面时需要重新加载数据, 在onResume方法中调用加载数据的方法,发现并没有执行。

具体切换fragment的方法如下:


<pre name="code" class="java">  private FragmentTransaction transaction;
    private  void switchContent(Fragment from, Fragment to) {
        if (mContent != to) {
            mContent = to;
            transaction = getFragmentManager().beginTransaction();
            if (!to.isAdded()) {    // 先判断是否被add过
                transaction.hide(from).add(R.id.model_subscibe_framelayout, to).commit(); // 隐藏当前的fragment,add下一个到Activity中
                to.setArguments(subscibe_bundle);
            } else {
                transaction.hide(from).show(to).commit(); // 隐藏当前的fragment,显示下一个
            }
        }
    }



<span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 14px;"> 当Fragment 从隐藏切换至显示的时候,不会调用onResume(),Fragment 的onResume()是Fragment 和它的宿主Activity在切换时才会调用的,而Fragment 之前切换时,不会调用onResume()方法,仔细查看发现Fragment 之前切换,Fragment 从隐藏切换至显示,会调用</span><span style="font-family: "microsoft yahei"; font-size: 14px; color: rgb(51, 51, 51); line-height: 24px; white-space: pre-wrap;">onHiddenChanged(boolean hidden)方法</span>
<span style="font-family: "microsoft yahei"; font-size: 14px; color: rgb(51, 51, 51); line-height: 24px; white-space: pre-wrap;"></span><pre name="code" class="java">  @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        if (hidden) {// 不在最前端界面显示

        } else {// 重新显示到最前端中

        }
    }








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值