Android Fragments - How to implement Backstacking and Recalling previous fragment
我有如下所示的安卓屏幕布局
应用程序屏幕分为 3 个片段,页眉、页脚和内容。页眉和页脚片段是固定的。内容片段根据内容而变化。我根据需要替换了 fragment1-fragment3。最初 Fragment1 显示在内容区域中。当我按下一个按钮时,fragment1 被 fragment2 替换。这是命令。我有一个问题,如果我之前按下另一个按钮,我怎样才能返回到上一个片段(片段 2 -> 片段 1)。片段类中是否有任何可用的内置机制。
请指导我...
提前致谢
试试这个代码
1 2 | FragmentTransaction tx = fragmentManager.beginTransation(); tx.replace( R.id.fragment, new MyFragment() ).addToBackStack("tag" ).commit(); |
每当您尝试调用新片段时,请通过
为其添加回堆栈
1 | ft.addToBackStack(null); |
现在,如果您想从一个片段返回到另一个片段,请创建一个方法..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public void DeleteCurrentFragment() { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); Fragment currentFrag = getSupportFragmentManager().findFragmentById(R.id.detailFragment); String fragName ="NONE"; if (currentFrag!=null) fragName = currentFrag.getClass().getSimpleName(); if (currentFrag != null) transaction.remove(currentFrag); transaction.commit(); } |
然后调用这个:
1 2 | getSupportFragmentManager().popBackStack(); DeleteCurrentFragment(); |
您可以尝试以下操作:
1 2 3 4 5 | FragmentManager manager = getSupportFragmentManager(); FragmentTransaction ft = manager.beginTransaction(); ft.add(R.id.contentFragment, <your fragment>); ft.addToBackStack(null); ft.commit(); |
所以假设你在
当您按下硬件后退按钮时会发生这种情况。如果您想在任何按钮上执行此操作,则在该按钮的单击侦听器上只需使用