2013-02-20 57 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並調用類的方法和傳遞您可能需要的任何值。