如何使片段完成自己

时间:2016-12-09 06:37:23

标签: android android-fragments

假设我有HomeActivity正在制作所有FragmentTransaction。因此,在每个片段中需要打开另一个片段时。

首先,片段使用带有bundle的newIntent()返回HomeActivity。然后Home Activity根据bundle中的数据打开前一个片段请求的所需片段。在按下按钮时以相同的方式打开这么多碎片后,它会将我带回所有先前的碎片,包括我按下的电流(如果我多次打开它)。
那么,如何完成()我从之前的所有片段历史中回击的当前片段,以便我不能通过转到之前的片段再次看到它

4 个答案:

答案 0 :(得分:1)

 FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
 fragmentTransaction.replace(containerId, fragment, fragment.getClass().getSimpleName());
 fragmentTransaction.addToBackStack("[Fragment Name as Flag]");
 fragmentTransaction.commit();

只需使用您的片段Tag添加backstack,因此Fragment事务将计数打开的相同片段为1,当popBackStack时,它将清除所有具有相同Flag的堆栈

答案 1 :(得分:1)

只需从您的片段交易中删除此代码

nil

我希望它会对你有所帮助。

答案 2 :(得分:1)

如果要在{0}的后台堆栈中添加片段,则在堆栈中添加片段,这样您的事务就会记住,然后您将导航回堆栈顶部的片段。

因此,如果您不希望在backStack中添加片段,请不要在片段事务处理期间使用fragmentTransaction.addToBackStack("[Fragment Name as Flag]");

答案 3 :(得分:0)

Thanx向所有人提供了你知识渊博的答案,但我找到了另一个解决方案,我在片段中定义了一个公共静态布尔变量,我想不应该在后栈中出现两次或更多次。因此,每当该片段被销毁时,布尔变量的值变为true(然后在onStart()中,只要它来自后向堆栈并进行进一步操作,它就会检查该值),这会阻止该片段在击中后再次出现。更多感谢大家的参与。