AlertDialog не уволить, нажав на фон на устройствах Samsung - PullRequest
0 голосов
/ 07 сентября 2018

Я использую AlertDialog (полное раскрытие: с использованием React Native, но это с использованием Native-кода и мостового соединения через API Native Modules, поэтому я не думаю, что RN вызывает проблему) в приложении, которое я разрабатываю для отображения меню пунктов, которое отлично работает во всех случаях. Я разработал его с помощью симулятора Pixel 2 (API 28, Android 9). Однако при тестировании на устройстве Samsung (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 голосов
/ 07 сентября 2018

Вы можете использовать следующее решение для отклонения AlertDialog, нажав на фон на устройствах Samsung:

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