Android 如何在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

在我的Android应用程序中,当用户触摸地图上的覆盖项超过1.5秒时,会出现AlertDialog。我需要用户的答案(alertDialogResult)来保留覆盖项或将其从映射中删除。但是,在调用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);
            }

为什么需要alertDialogResult标志,您可以移动

  AndroidMainActivity.sendDeleteOverlayRequest(mapView, overlayItemId); 
单击正按钮

编辑:您的AlertDialog在初始化后不会等待用户交互。这就是为什么Onclick有回调。

Put
AndroidMainActivity.sendDeleteOverlayRequest(mapView,overlayItemId)

在正极按钮的一次单击中
只有这样,您才能实现您的要求,即在用户输入后执行操作。

IDE要求我将mapView和OverlyItemId更改为final,这会产生任何意外影响吗?不会。。如果您不更改这些变量,那么它就不重要了,每次执行OnTouch时,overlayItemId都会更改。。。这就是您所指的?然后在您的主活动中使用sendDeleteOverlayRequest声明一个函数,然后从onclickOk调用该函数,我注意到overlayItemId只分配了一次,每次OnTouch()完成时都会被销毁。简言之,它不会产生任何意想不到的效果,同时确保内部类接收的对象将至少持续到OnTouch()完成。谢谢