2010-07-27 4 views
4

Повторное использование окна AlertDialog в приложении для Android.Android - Измените текст положительной кнопки AlertDialog

Я создаю диалог в методе onCreateDialog() и в методе onPrepareDialog(), я пытаюсь изменить текст положительной кнопки, используя следующий код.

alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, this.getString(R.string.add), new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
      //Handler code 
    } 
} 

Слушатель onclick меняется, но текст кнопки не изменяется.

Это ошибка в Android или я что-то не так?

ответ

21

Одним из решений является просто заставить кнопку перерисовывать. Например, кнопка для отмены длительной операции может измениться на «ОК» при завершении, например.

Button button = progressDialog.getButton(ProgressDialog.BUTTON1); 
button.setText("OK"); 
button.invalidate();
+0

Спасибо. Работает как шарм. – Sudar

+0

Спасибо! Стоит отметить, что если вы сделаете это с кнопками AlertDialog в onPrepareDialog, как и в вопросе, вам даже не понадобится 'invalidate()'. Наверное, это потому, что диалог не отображается на экране в этот момент. –

-1

Это работает для меня

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 

     case DIALOG_ID: 
      return AlertDialog.Builder(this).setTitle(R.string.contact_groups_add) 
    .setView(addView).setPositiveButton(R.string.ok, 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, 
         int whichButton) { 

       } 
      }).setNegativeButton(R.string.cancel, 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, 
         int whichButton) { 
       } 
      }).create(); 
    } 
    return null; 
} 
+0

У вас есть этот код в onCreateDialog() или inPrepareDialog()? – Sudar

+0

Ни в одном из них. Я не использовал эти методы деятельности повторно. Этот код просто показывает диалоговое окно предупреждения с представлением из addView (завышенное ранее). – Pentium10

+0

Я понимаю этот код. Но мой вопрос был другим. Я уже использую функции onCreateDialog() и onPrepareDialog(). Я создал диалог в методе onCreateDilaog(), но когда я пытаюсь изменить текст положительной кнопки в onPrepareDialog(), он меняет только onClickListener, а не текст. – Sudar

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