Android 如何在AlertDialog获得用户';谁的反应?
在我的Android应用程序中,当用户触摸地图上的覆盖项超过1.5秒时,会出现AlertDialog。我需要用户的答案(alertDialogResult)来保留覆盖项或将其从映射中删除。但是,在调用AlertDialog内部类之后,外部类继续执行,此时我没有用户的答案 有什么建议吗?除了AlertDialog还有其他选择吗Android 如何在AlertDialog获得用户';谁的反应?,android,inner-classes,android-alertdialog,Android,Inner Classes,Android Alertdialog,在我的Android应用程序中,当用户触摸地图上的覆盖项超过1.5秒时,会出现AlertDialog。我需要用户的答案(alertDialogResult)来保留覆盖项或将其从映射中删除。但是,在调用AlertDialog内部类之后,外部类继续执行,此时我没有用户的答案 有什么建议吗?除了AlertDialog还有其他选择吗 final Boolean alertDialogResult = false; if ( ( pressEndTime - pressStart
final Boolean alertDialogResult = false;
if ( ( pressEndTime - pressStartTime ) > 1500 ) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder( mapView.getContext() );
alertDialog.setTitle( "Warning!" );
alertDialog.setMessage("Do you want to delete the selected overlayItem?");
alertDialog.setCancelable(false);
alertDialog.setIcon(R.drawable.ic_dialog_alert);
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
alertDialogResult = true;
}
});
alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
alertDialog.show();
longPress = true;
if ( alertDialogResult == true ) {
AndroidMainActivity.sendDeleteOverlayRequest(mapView, overlayItemId);
}
为什么需要alertDialogResult标志,您可以移动
AndroidMainActivity.sendDeleteOverlayRequest(mapView, overlayItemId);
单击正按钮
编辑:您的AlertDialog在初始化后不会等待用户交互。这就是为什么Onclick有回调。PutAndroidMainActivity.sendDeleteOverlayRequest(mapView,overlayItemId)代码>
在正极按钮的一次单击中
只有这样,您才能实现您的要求,即在用户输入后执行操作。IDE要求我将mapView和OverlyItemId更改为final,这会产生任何意外影响吗?不会。。如果您不更改这些变量,那么它就不重要了,每次执行OnTouch时,overlayItemId都会更改。。。这就是您所指的?然后在您的主活动中使用sendDeleteOverlayRequest声明一个函数,然后从onclickOk调用该函数,我注意到overlayItemId只分配了一次,每次OnTouch()完成时都会被销毁。简言之,它不会产生任何意想不到的效果,同时确保内部类接收的对象将至少持续到OnTouch()完成。谢谢