我在Activity.onCreate()
中添加了片段(主片段),但没有将它添加到backstack中,我使用FragmentTransaction.replace()
来完成。之后,我使用FragmentTransaction.replace()
添加每个下一个片段,并将其添加到后台堆栈。片段在popbackstack后不可见
我有一个功能,清理后台,离开家庭片段可见,这样做我使用FragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
。如果我只添加一个片段到backstack,然后清除backstack它工作正常,但如果我添加多个然后清除backstack后屏幕是空白的,尽管主页片段收到onStart()和onResume()并认为它是可见的,它不会收到onPause(),onStop(),直到我再次添加另一个片段或离开应用程序。 另外,如果我popBackstack()
一个接一个(在用户操作)它工作正常,但如果我popBackstack()
在循环(一次弹出所有片段)它不起作用。
下面的代码:
public void changeFragment(BaseFragment fragment, boolean addToBackStack, boolean preventDuplicate) {
Fragment topFragment = getSupportFragmentManager().findFragmentById(fragmentContainer.getId());
if (preventDuplicate && topFragment != null && fragment.getClass().equals(topFragment.getClass())) {
//Prevent adding same fragment
return;
}
FragmentTransaction transaction =
fragmentManager
.beginTransaction()
.replace(fragmentContainer.getId(), fragment);
if (addToBackStack) {
transaction.addToBackStack(null);
}
transaction.commit();
}
public void goToHome() {
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
尝试'fragmentManager.popBackStackImmediate()' –
@KamranAhmed它并没有改变任何东西 – FullRandom