Я использую 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 делают это? Как я могу это исправить?