【发布时间】:2016-06-11 12:09:59
【问题描述】:
我有一个这样的片段堆栈
F1 -> F2 -> F3 -> F4 -> F5
现在我需要删除 F2、F3、F4 片段。
如果我从 F5 片段按下返回按钮,我需要它应该转到 F1。
注意:我不会从活动中更改片段片段。从片段中改变片段。
【问题讨论】:
标签: android android-fragments android-activity
我有一个这样的片段堆栈
F1 -> F2 -> F3 -> F4 -> F5
现在我需要删除 F2、F3、F4 片段。
如果我从 F5 片段按下返回按钮,我需要它应该转到 F1。
注意:我不会从活动中更改片段片段。从片段中改变片段。
【问题讨论】:
标签: android android-fragments android-activity
销毁Fragment F5 清除Back Stack 直至F2。
试试这样的:
您的MainActivity 中的public 方法:
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
}
【讨论】:
您可以使用标志管理任务。例如,这将清除 home 顶部的所有活动。
Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent)
因此,如果您在 Home Activity 上开始了 4 个或 5 个或更多任务,您可以在第五个调用完成并返回家中。
我期待它的片段版本,但这取决于您管理任务的方式。
编辑
我为片段找到了它:
FragmentManager.popBackStack(String name, FragmentManager.POP_BACK_STACK_INCLUSIVE)
这将弹出所有状态到指定的状态。
【讨论】:
你可以实现这种行为,使用 F1 来管理每一个想法。
假设您正在执行一个过程,那么每个步骤都取决于最后一个答案。你所要做的就是回到 F1 你得到的每一个答案,而不是让 F1 打开下一步。
例如:
1° 在 F1 中你说你要显示一个人的电话号码
2° F1 呼叫 F2 是您搜索名称。当用户选择名称时 F2 返回到 F1 名称并关闭
3° F1 得到的名字比 F2 返回的名字和用这个名字调用 F3 和 F3 显示数字
不是很花哨,但至少在我不得不做类似的事情时对我有用。
【讨论】: