在我的Android应用程序中,当用户触摸地图上的overlayItem超过1.5秒时,会出现AlertDialog。我需要用户的回答( alertDialogResult )来保留overlayItem或将其从地图中删除。但是,在调用AlertDialog内部类之后,外部类继续执行它,此时我没有用户的答案。
有什么建议吗? AlertDialog的替代方法吗?
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);
}
答案 0 :(得分:1)
为什么需要alertDialogResult标志,你可以移动
AndroidMainActivity.sendDeleteOverlayRequest(mapView, overlayItemId);
点击positiveButton
编辑:您的AlertDialog在初始化后不会等待用户Interatction。这就是Onclick回调的原因。
答案 1 :(得分:0)
放上 AndroidMainActivity.sendDeleteOverlayRequest(mapView, overlayItemId);
在positiveButton的onClick中。
这样只有你能实现你所要求的,即。在用户输入后执行操作。