如何在AlertDialog获得用户响应之前停止外部类执行?

时间:2012-01-13 15:59:02

标签: android inner-classes android-alertdialog

在我的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);
            }

2 个答案:

答案 0 :(得分:1)

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

  AndroidMainActivity.sendDeleteOverlayRequest(mapView, overlayItemId); 

点击positiveButton

编辑:您的AlertDialog在初始化后不会等待用户Interatction。这就是Onclick回调的原因。

答案 1 :(得分:0)

放上 AndroidMainActivity.sendDeleteOverlayRequest(mapView, overlayItemId);
在positiveButton的onClick中。
这样只有你能实现你所要求的,即。在用户输入后执行操作。