我正在使用DialogFragment
。我有三个对话框一个接一个出现。
国家/地区列表 - >州名单 - >地区列表
我在每个对话框上都有拖拽按钮Cancel
和OK
。在显示下一个对话框之前,我将当前对话框放到堆栈上现在,用户可以按“说明状态列表”对话框上的Cancel
按钮。我不希望他被带回国家名单对话框。我只是要退出对话框。同样,当用户按下OK
按钮时,我不希望弹出堆叠对话框。我想优雅地结束对话并更新数据库。
我搜索了SO和谷歌文档。我发现这应该通过以下方式实现:
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");
谢谢
修改
似乎我不清楚。我能够将对话框放到堆栈中。那不是问题。问题是当我不再需要显示堆叠对话框时,如何清空(不弹出)后退堆栈?我不希望堆叠的对话框再次弹出。我希望他们死在堆栈上,不要回来。我想清空堆栈。 希望它有所帮助。
答案 0 :(得分:0)
如果要关闭对话框,则不需要添加回堆栈对话框,应使用:dimiss()
方法。
注意:
您在addToBackStack()
方法
答案 1 :(得分:0)
从代码中删除此行
ft.addToBackStack(null);