我有几个片段的后退栈,我需要知道我从另一个返回到其中一个。
就像你有onActivityResult
时一样,我想知道是否可以在片段中检查popBackStack()
调用?
我在这里调用它:
@Override
public void postFinished(){
getFragmentManager().popBackStack();
}
在Android Java中有类似的东西吗?
我有几个片段的后退栈,我需要知道我从另一个返回到其中一个。
就像你有onActivityResult
时一样,我想知道是否可以在片段中检查popBackStack()
调用?
我在这里调用它:
@Override
public void postFinished(){
getFragmentManager().popBackStack();
}
您可以在Activity页面上添加BackStackChange
监听器,例如:
getSupportFragmentManager().addOnBackStackChangedListener(
new FragmentManager.OnBackStackChangedListener() {
public void onBackStackChanged() {
// Your Code Here
}
});
getSupportFragmentManager().addOnBackStackChangedListener(
new FragmentManager.OnBackStackChangedListener() {
public void onBackStackChanged() {
FragmentManager fm = getSupportFragmentManager();
if (fm != null) {
int backStackCount = fm.getBackStackEntryCount();
if (backStackCount == 0) {
}
}
}
});
addOnBackStackChangedListener
和 fm.getBackStackEntryCount();
,这将返回片段的后退栈计数。you can do in onViewCreated() method:
if (savedInstanceState == null && !mAlreadyLoaded) {
mAlreadyLoaded = true;
// Do this code only first time, not after rotation or reuse fragment from backstack
}
Because when android put fragment on backstack, it only destroy its view, but don't kill instance itself, so mAlreadyLoaded will be still true when fragment will be restored from backstack.