不能通过在三星设备上点击背景来关闭AlertDialog

时间:2018-09-07 13:47:47

标签: android react-native alertdialog

我在开发的应用程序中使用AlertDialog(完整披露:使用React Native,但这是使用Native代码并通过Native Modules API桥接的,所以我认为RN不会引起问题)显示项目菜单,该菜单在所有情况下均能完美运行。我使用Pixel 2模拟器(API 28,Android 9)开发了它。但是,在三星设备(Galaxy S4,Android 5)上进行测试时,通过触摸应用程序的背景无法关闭该对话框。我只能在按返回按钮时取消它。这是我正在使用的代码:

@ReactMethod
public void showDialog(ReadableArray labelsReadableArray, final Promise promise) {
    final String[] labels = getLabels(labelsReadableArray);
    new AlertDialog.Builder(getCurrentActivity())
        .setItems(labels, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int itemIndex) {
                dialog.dismiss();
                promise.resolve(itemIndex);
            }
        })
        .setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                promise.reject("dialog was closed");
            }
        }).setCancelable(true)
        .show();
}

,在我叫的React Native代码中:

NativeModules.AndroidPicker.showDialog(labels)
  .then((index) => /* JS/redux action to process the change)
  .catch(err => console.log(err))

为什么在点击背景时Samsung设备不能取消对话框,而其他Android手机却不能取消对话框?我该如何解决?

1 个答案:

答案 0 :(得分:0)

您可以使用以下解决方案通过在三星设备上点击背景来消除AlertDialog

AlertDialog alertDialog;
  alertDialog = new AlertDialog.Builder(this).create();
  alertDialog.setCanceledOnTouchOutside(true);