Fragment回退栈和Activity栈不太一样
2018-03-16 本文已影响0人
jiting45
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();
}
}
}
});