如何从当前片段中删除所有以前的片段,除了当前片段和第一片段?

时间:2016-06-11 12:09:59

标签: android android-fragments android-activity onclicklistener

我有像这样的片段堆栈

F1 -> F2 -> F3 -> F4 -> F5

现在我需要删除F2,F3,F4片段。

我需要如果我按下F5片段的后退按钮,它应该转到F1。

注意:我没有从活动中更改片段片段。从片段中改变片段。

3 个答案:

答案 0 :(得分:5)

摧毁Fragment F5清除Back StackF2

尝试这样的事情:

public中的

MainActivity方法:

public void clearBackStackInclusive(String tag) {
     getSupportFragmentManager().popBackStack(tag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}

现在位于F5片段中:

@Override
public void onDestroy() {
   super.onDestroy();
   ((MainActivity)getActivity()).clearBackStackInclusive("tag"); // tag (addToBackStack tag) should be the same which was used while transacting the F2 fragment
}

Reference

答案 1 :(得分:2)

您可以使用标记管理任务。例如,这将清除主页上的所有活动。

Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent)

因此,如果你通过家庭活动开始4或5个或更多任务,你可以在第五个叫完完,然后回家。

我期待它的片段版本,但这取决于你管理任务的方式。

修改

我发现它是碎片:

FragmentManager.popBackStack(String name,         FragmentManager.POP_BACK_STACK_INCLUSIVE)

将弹出所有状态到指定状态。

答案 2 :(得分:0)

嗯,你可以实现这种行为,用F1来管理每一个想法。 假设您正在进行一个过程,每一步都取决于最后的答案。所有你要做的就是回到F1,你得到的每一个答案都要比下一步让F1开启。 例如:
1°在F1中,你说你要显示一个人的电话号码 2°F1 F1呼叫你搜索一个名字。当用户选择名称时,F2返回F1名称并关闭
3°F1获取的名称比F2返回的名称,并使用此名称调用F3,F3显示数字

不是很花哨,但至少在我必须做类似事情的时候对我有用。