【发布时间】:2021-09-10 19:33:25
【问题描述】:
我已经为我的 DialogFragment 定义了一个方法,它将弹出另一个(警报)对话框,我确认用户想要关闭 DialogFragment。如果是这样,那么我打电话给DialogFragment.dismiss()。如果不是,则应简单地忽略 DialogFragment 的关闭,并且用户应像以前一样返回到它。
此方法(例如,confirmCancel())用于 DialogFragment 底部的“取消”按钮。由于我还希望在用户按下后退按钮或触摸 DialogFragment 外部时显示它,因此我将 confirmCancel 设置为其onCancelListener(当然,我也使用了getDialog().setCanceledOnTouchOutside(true))。
这是confirmCancel()的代码:
public void confirmCancel()
{
(new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.ic_baseline_warning_24)
.setTitle("Discard changes")
.setMessage("Are you sure you want to discard changes and go back?")
.setPositiveButton("Yes", ( dialogInterface, i ) -> dismiss())
.setNegativeButton("No", ( dialogInterface, i ) -> {})
.show()).setCanceledOnTouchOutside(true);
}
这几乎可以完美地工作,除了当 AlertDialog 显示在屏幕上时,DialogFragment 已经关闭,并且在 AlertDialog 中采取的操作根本没有用。
所以我现在需要的是一种“取消”解除 DialogFragment 的方法,或者一种在解除之前调用 的方法。我该如何解决?
P.S.:getDialog().setCancelable(false) 对我没有帮助,因为我确实希望取消对话;只是我希望它有条件地取消。
【问题讨论】:
标签: java android android-dialogfragment bottomsheetdialogfragment