簡體   English   中英

非瑣碎的android片段Backstack

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM