0

我目前有一个应该返回对话框结果的方法。我正在使用的代码是

 private int ShowDialog(String FileName)
 {
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
      // set title
      alertDialogBuilder.setTitle("Play File");

            // set dialog message
            alertDialogBuilder
                .setMessage("Would you like .... file")
                .setCancelable(false)
                .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) 
                    {
                        dialog.cancel();
                        return 1;
                    }
                  })
                .setNegativeButton("No",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        dialog.cancel();
                        return 0;
                    }
                });

             AlertDialog alert11 = alertDialogBuilder.create();
             alert11.show();

 }

但似乎 onClick 方法应该是无效的。无论如何我可以让这个方法返回一个值,并反过来导致 ShowDialog 方法返回那个值。?

4

3 回答 3

2

尝试这样的事情

private int ShowDialog(String FileName)
{
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
     // set title
     alertDialogBuilder.setTitle("Play File");

           // set dialog message
           alertDialogBuilder
               .setMessage("Would you like .... file")
               .setCancelable(false)
               .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog,int id) 
                   {
                       returnVal = 1;  // Instead of directly returning - set it here
                       dialog.dismiss();

                   }
                 })
               .setNegativeButton("No",new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog,int id) {
                       returnVal = 0;  // Instead of directly returning - set it here
                       dialog.dismiss();
                   }
               });

            AlertDialog alert11 = alertDialogBuilder.create();
            alert11.show();

     return returnVal; // return it here.
}

returnVal是您的活动中的成员变量。

于 2013-02-20T05:27:46.853 回答
0

你不能。对话框是异步的,这意味着您的方法只能显示它,但只有在用户按下按钮之前才能知道对话框的实际值。您需要更改代码以适应此情况。单击按钮后,您可以调用容器类中的另一个方法。

于 2013-02-20T05:24:37.190 回答
0

onClick()按钮上的方法由AlertDialog系统在单独的线程上调用。正如您所看到的方法的返回类型是void,您不能返回任何值。

您可以做的是Handler在您的类上使用并调用一个方法并传递您可能需要的任何值。

于 2013-02-20T05:25:40.857 回答