2013-02-20 58 views
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方法应该是一个void。无论如何,我可以使这个方法返回一个值,并作为回报使ShowDialog方法返回该值。

+0

“方法,它应该返回一个对话的结果”你能明确告诉你要返回 – 2013-02-20 05:21:52

+0

你怎么想回到什么结果对话框的? – SKT 2013-02-20 05:33:50

回答

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在你活动的成员变量。

0

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

0

AlertDialog上的按钮方法onClick()由系统在单独的线程上调用。如您所见,该方法的返回类型为void,因此无法返回任何值。

你可以做的是使用Handler并调用类的方法和传递您可能需要的任何值。