2013-02-20 5 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 должен быть недействительным. В любом случае, я могу заставить этот метод возвратить значение и в ответ заставить метод ShowDialog вернуть это значение.?

+0

метод, который должен возвращать результат диалога "можете ли вы конкретно указать, какой результат диалога вы хотите вернуть –

+0

Что вы хотите вернуть? – SKT

ответ

2

Try что-то вроде этого

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

Метод onClick() кнопки на AlertDialog вызывается системой в отдельном потоке. И, как вы видите, тип возвращаемого метода равен void, вы не можете возвращать любые значения как таковые.

Что вы можете сделать, это использовать Handler и вызвать метод в своем классе и передать любые значения, которые могут вам понадобиться.

Смежные вопросы