我在开发的应用程序中使用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手机却不能取消对话框?我该如何解决?
答案 0 :(得分:0)
您可以使用以下解决方案通过在三星设备上点击背景来消除AlertDialog
:
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setCanceledOnTouchOutside(true);