通过对话框返回值

时间:2013-02-20 05:13:46

标签: android

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

 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方法返回该值。?

3 个答案:

答案 0 :(得分: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是您的活动中的成员变量。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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