美文网首页
Fragment回退栈和Activity栈不太一样

Fragment回退栈和Activity栈不太一样

作者: jiting45 | 来源:发表于2018-03-16 15:28 被阅读0次

    Fragment回退栈,加入到Fragment回退栈里面的fragment出栈后,处于栈顶的fragment也不会执行onResume生命周期。(即已经加入到Fragment回退栈里面的Fragment不会再执行Fragment的任何一个生命周期方法)这点和activity栈不一样。
    如果想要Fragment回退栈里面的生命周期方法执行,只能通过曲线救国的方式:在fragment的容器Activity中添加回退监听,通过tag拿到回退栈中想要的fragment实例,然后通过该实例强制调用fragment的生命周期方法。

            getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
                @Override
                public void onBackStackChanged() {
                    FragmentManager fm = getSupportFragmentManager();
                    if (fm != null) {
                        HouseContrastListFragment fragment = (HouseContrastListFragment) fm.findFragmentByTag(HouseContrastListFragment.TAG);
                        if (fragment != null) {
                            fragment.onResume();
                        }
    
                        HouseDetailFragment houseDetailFragment
                                = (HouseDetailFragment) fm.findFragmentByTag(HouseDetailFragment.TAG);
                        if (houseDetailFragment != null) {
                            houseDetailFragment.onResume();
                        }
                    }
                }
            });
    

    相关文章

      网友评论

          本文标题:Fragment回退栈和Activity栈不太一样

          本文链接:https://www.haomeiwen.com/subject/ldfrqftx.html