如何清空后挡?

时间:2017-12-20 11:08:58

标签: android dialog back-stack

我正在使用DialogFragment。我有三个对话框一个接一个出现。

国家/地区列表 - >州名单 - >地区列表

我在每个对话框上都有拖拽按钮CancelOK。在显示下一个对话框之前,我将当前对话框放到堆栈上现在,用户可以按“说明状态列表”对话框上的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");

谢谢

修改

似乎我不清楚。我能够将对话框放到堆栈中。那不是问题。问题是当我不再需要显示堆叠对话框时,如何清空(不弹出)后退堆栈?我不希望堆叠的对话框再次弹出。我希望他们死在堆栈上,不要回来。我想清空堆栈。 希望它有所帮助。

2 个答案:

答案 0 :(得分:0)

如果要关闭对话框,则不需要添加回堆栈对话框,应使用:dimiss()方法。

注意: 您在addToBackStack()方法

中设置为null

答案 1 :(得分:0)

从代码中删除此行

ft.addToBackStack(null);