Android setOnDismissListener未在带有AlertDialog.Builder的onCreate



我有一个活动按钮,通过调用此方法打开我的自定义对话框

public void openHcoDialog(View v) {
HcoDialog hcoDiag = new HcoDialog();
// Supply cityCode input as an argument.
Bundle args = new Bundle();
args.putString("cityCode", cityCode);
hcoDiag.setArguments(args);
hcoDiag.show(getSupportFragmentManager(), "hco dialog");
}

在这个HcoDialog类中,我将DialogFragment扩展为

public class HcoDialog extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.hco_dialog, null);
builder.setView(view);
builder.setCancelable(true);
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
Toast.makeText(getActivity(), "Toast 1", Toast.LENGTH_LONG).show();
progressDialog.dismiss();
}
});
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
Toast.makeText(getActivity(), "Toast 2", Toast.LENGTH_LONG).show();
progressDialog.dismiss();
}
});
}

因此,当我关闭对话框时,通过单击外部或按下后退按钮,对话框将关闭,但progressDialog将继续运行,因为从未调用过onDismissonCancel

我正在努力解决这个问题一个小时了。我读过很多堆叠式的答案,但似乎都不起作用。

提前谢谢。

根据onCreateDialog((文档:

注意:DialogFragment拥有Dialog.setOnCancelListenerDialog.setOnDismissListener回调你不能自己设置它们若要了解这些事件,请覆盖onCancel(对话框接口(和onDismiss(对话框界面(。

因此,必须将逻辑移动到DialogFragment上的onCancel()onDismiss()方法。

最新更新