[英]non trivial android fragments backstack
我正在嘗試實現以下片段設計:片段A被片段B取代,片段B又被片段C取代。無論是在片段B還是片段C中,我都希望用戶向后導航以將其帶回到片段A。當用B替換A時,我添加到后堆棧。但是當我從B移到C時,我不添加到后堆棧。 從片段B返回時,一切正常。 但是,當從C導航回來時,我和A在同一屏幕上顯示C-C不會消失。 我想知道這是否與我的后台使用有關。 任何幫助表示贊賞。
我的代碼等效於:
Fragment fragment;
fragment = new FragmentA();
transaction.replace(R.id.container, fragment);
transaction.commit();
fragment = new FragmentB();
transaction.replace(R.id.container, fragment);
transaction.addToBackStack(null);
transaction.commit();
fragment = new FragmentC();
transaction.replace(R.id.container, fragment);
transaction.commit();
這是添加到Backstack的一般方法。 使用標簽。
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment1 fragment1 = new Fragment1();
fragmentTransaction.replace(R.id.fragment_container, fragment1, Fragment1.class.getName());
fragmentTransaction.addToBackStack(Fragment1.class.getName());
fragmentTransaction.commit();
現在類似地,對於frament2:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment2 fragment2 = new Fragment2();
fragmentTransaction.replace(R.id.fragment_container, fragment2, Fragment2.class.getName());
fragmentTransaction.addToBackStack(Fragment2.class.getName());
fragmentTransaction.commit();
對fragment3做同樣的事情。 現在,您可以使用以下方法從backstack中刪除fragment2:
getFragmentManager().popBackStack(
Fragment2.class.getName(),
FragmentManager.POP_BACK_STACK_INCLUSIVE);
您應該能夠直接從fragment3跳回到fragment2。
另外,您是否使用fragmentTransaction.replace(...),而不是fragmentTransaction.add(...)。 您可以發布相關代碼嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.