Fragment回退棧,加入到Fragment回退棧里面的fragment出棧后,處于棧頂?shù)膄ragment也不會(huì)執(zhí)行onResume生命周期。(即已經(jīng)加入到Fragment回退棧里面的Fragment不會(huì)再執(zhí)行Fragment的任何一個(gè)生命周期方法)這點(diǎn)和activity棧不一樣。
如果想要Fragment回退棧里面的生命周期方法執(zhí)行,只能通過(guò)曲線救國(guó)的方式:在fragment的容器Activity中添加回退監(jiān)聽,通過(guò)tag拿到回退棧中想要的fragment實(shí)例,然后通過(guò)該實(shí)例強(qiáng)制調(diào)用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();
}
}
}
});