我在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