我的項目包含兩個片段:popBackStack()後addToBackStack不起作用
- FragmentA:當點擊一個按鈕完成更換
fragmentA
:默認加載的片段時,應用程序啓動 - FragmentB 。
這是我的主要觀點的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/main_fragment_container"
android:name="fragmentA"
android:layout_width="match_parent"
android:layout_height="match_parent">
</fragment>
</LinearLayout>
當我謹對FragmentB
更換FragmentA
,我用這個代碼:
FragmentTransaction fragmentTransaction = getSupportFragmentManager()
.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.main_fragment_container, new FragmentB());
fragmentTransaction.commit();
此代碼工作正常。我的碎片A被新的FragmentB
取代。但是當點擊後退按鈕時,我希望使用popBackStackImmediate()
替換FragmentB
的FragmentA
。
這是我使用的代碼:
if (getSupportFragmentManager().getBackStackEntryCount() > 0){
boolean done = getFragmentManager().popBackStackImmediate();
fragmentTransaction.commit();
}
功能popBackStackImmediate
返回始終爲false和FragmentB
仍然在前臺。
爲什麼當我撥打popBackStackImmediate
時,FragmentA不會取代FragmentB?有人有解決我的問題的想法嗎?
在此先感謝
避免使用背堆!它並沒有真正幫助整體效率!使用普通的替換(),甚至更好地移除/添加每次你想瀏覽!檢查我的帖子http://stackoverflow.com/questions/5802141/is-this-the-right-way-to-clean-up-fragment-back-stack-when-leaving-a-deeply-nest/26093368# 26093368 –