我有如下所示的android屏幕布局
应用程序屏幕分为 3 个片段,页眉、页脚和内容。页眉和页脚片段是固定的。内容片段根据内容而变化。我根据需要替换了fragment1-fragment3。最初 Fragment1 显示在内容区域中。当我按下下一个按钮时,fragment1 被 fragment2 替换。这是命令。我有一个问题,如果我之前按下另一个按钮,我怎样才能返回到上一个片段(片段2->片段1)。片段类中是否有任何内置机制可用。
请指导我...
提前致谢
我有如下所示的android屏幕布局
应用程序屏幕分为 3 个片段,页眉、页脚和内容。页眉和页脚片段是固定的。内容片段根据内容而变化。我根据需要替换了fragment1-fragment3。最初 Fragment1 显示在内容区域中。当我按下下一个按钮时,fragment1 被 fragment2 替换。这是命令。我有一个问题,如果我之前按下另一个按钮,我怎样才能返回到上一个片段(片段2->片段1)。片段类中是否有任何内置机制可用。
请指导我...
提前致谢
试试这个代码
FragmentTransaction tx = fragmentManager.beginTransation();
tx.replace( R.id.fragment, new MyFragment() ).addToBackStack( "tag" ).commit();
您可以尝试以下方法:
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.add(R.id.contentFragment, <your fragment>);
ft.addToBackStack(null);
ft.commit();
所以假设你fragment1
在做一些你想做的事情fragment2
之后,然后根据你的要求contentFragment
你可以add
或replace
片段(fragment2
在这种情况下)。现在,当您调用addToBackStack
它时,意味着将此事务添加到后台堆栈。这样事务将在提交后被记住,并在以后从堆栈中弹出时反转其操作。它在内部维护一个堆栈,所以你不想做任何事情。最后,当您按下返回按钮时,fragment2
它会检查事务是否在其堆栈中有任何片段,如果是,则调用它。它就像栈顶。当您调用addToBackStack
该堆栈 fragment1 时,将添加该堆栈。因此,当您按下后退按钮堆栈的顶部时fragment1
,它会调用它。
当您按下硬件后退按钮时会发生这种情况。如果您想在任何按钮上执行此操作,则在该按钮的单击侦听器简单onBackPressed()
方法上执行此操作。
每当您尝试调用新片段时,然后通过
ft.addToBackStack(null);
现在,如果您想从一个片段返回到另一个片段,请制作一种方法..
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();
}
之后调用这个:
getSupportFragmentManager().popBackStack();
DeleteCurrentFragment();