Android setOnDismissListener 没有在 onCreateDialog 中被调用 AlertDialog.Builder?
Android setOnDismissListener not getting called inside onCreateDialog with AlertDialog.Builder?
我在 activity 上有一个按钮,通过调用此方法可以打开我的自定义对话框
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 中 class 我已经扩展了 extends DialogFragment as
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 将 运行 保持为 onDismiss 或 onCancel 从未被调用过?
我现在正努力解决这个问题。已阅读许多 Whosebug 答案,但 none 似乎有效。
提前致谢。
根据 onCreateDialog() documentation:
Note: DialogFragment
own the Dialog.setOnCancelListener
and Dialog.setOnDismissListener
callbacks. You must not set them yourself. To find out about these events, override onCancel(DialogInterface) and onDismiss(DialogInterface).
因此您必须将逻辑移至 DialogFragment
上的 onCancel()
和 onDismiss()
方法。
我在 activity 上有一个按钮,通过调用此方法可以打开我的自定义对话框
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 中 class 我已经扩展了 extends DialogFragment as
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 将 运行 保持为 onDismiss 或 onCancel 从未被调用过?
我现在正努力解决这个问题。已阅读许多 Whosebug 答案,但 none 似乎有效。
提前致谢。
根据 onCreateDialog() documentation:
Note:
DialogFragment
own theDialog.setOnCancelListener
andDialog.setOnDismissListener
callbacks. You must not set them yourself. To find out about these events, override onCancel(DialogInterface) and onDismiss(DialogInterface).
因此您必须将逻辑移至 DialogFragment
上的 onCancel()
和 onDismiss()
方法。