我有像这样的片段堆栈
F1 -> F2 -> F3 -> F4 -> F5
现在我需要删除F2,F3,F4片段。
我需要如果我按下F5片段的后退按钮,它应该转到F1。
注意:我没有从活动中更改片段片段。从片段中改变片段。
答案 0 :(得分:5)
摧毁Fragment
F5
清除Back Stack
至F2
。
尝试这样的事情:
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
}
答案 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显示数字
不是很花哨,但至少在我必须做类似事情的时候对我有用。