如何清空后栈?
How do I empty the back stack?
我正在使用 DialogFragment
。我有三个对话框依次出现。
国家列表 --> 州列表 --> 地区列表
我在每个对话框中都有两个按钮,Cancel
和 OK
。在显示下一个对话框之前,我将当前对话框放入堆栈。现在用户可以在 States List 对话框中按下 Cancel
按钮。我不希望他被带回国家列表对话框。我只是要退出对话。同样,我不希望在用户按下 OK
按钮时弹出堆叠对话框。我想优雅地结束对话并更新数据库。
我搜索了 SO 和 google 文档。我发现这应该通过以下方式实现:
FragmentManager ft = getFragmentManager();
ft.popBackStack("mydialog", FragmentManager.POP_BACK_STACK_INCLUSIVE);
但这对我不起作用。我试着把它放在 builder.setNegativeButton
里面,也放在 builder.setPositiveButton
里面。似乎没有任何效果。
这是我将它们放入堆栈的方式:
RegionsDialogFragment dialogFragment = new RegionsDialogFragment ();
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("mydialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
dialogFragment.show(ft, "mydialog");
谢谢
编辑
我好像没说清楚。我能够将对话框放入堆栈。那不是问题。问题是当我不再需要显示堆叠对话框时如何清空(不是弹出)返回堆栈?我不希望堆叠的对话框再次自行弹出。我希望他们死在堆栈上,不要回来。我想清空堆栈。
希望对你有帮助。
你不需要添加回栈对话框,如果你想关闭一个对话框,你应该使用:dimiss()
方法。
注意:
您正在 addToBackStack()
方法
中设置 null
从您的代码中删除这一行
ft.addToBackStack(null);
我正在使用 DialogFragment
。我有三个对话框依次出现。
国家列表 --> 州列表 --> 地区列表
我在每个对话框中都有两个按钮,Cancel
和 OK
。在显示下一个对话框之前,我将当前对话框放入堆栈。现在用户可以在 States List 对话框中按下 Cancel
按钮。我不希望他被带回国家列表对话框。我只是要退出对话。同样,我不希望在用户按下 OK
按钮时弹出堆叠对话框。我想优雅地结束对话并更新数据库。
我搜索了 SO 和 google 文档。我发现这应该通过以下方式实现:
FragmentManager ft = getFragmentManager();
ft.popBackStack("mydialog", FragmentManager.POP_BACK_STACK_INCLUSIVE);
但这对我不起作用。我试着把它放在 builder.setNegativeButton
里面,也放在 builder.setPositiveButton
里面。似乎没有任何效果。
这是我将它们放入堆栈的方式:
RegionsDialogFragment dialogFragment = new RegionsDialogFragment ();
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("mydialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
dialogFragment.show(ft, "mydialog");
谢谢
编辑
我好像没说清楚。我能够将对话框放入堆栈。那不是问题。问题是当我不再需要显示堆叠对话框时如何清空(不是弹出)返回堆栈?我不希望堆叠的对话框再次自行弹出。我希望他们死在堆栈上,不要回来。我想清空堆栈。 希望对你有帮助。
你不需要添加回栈对话框,如果你想关闭一个对话框,你应该使用:dimiss()
方法。
注意:
您正在 addToBackStack()
方法
从您的代码中删除这一行
ft.addToBackStack(null);