Обновить или изменить сообщение AlertDialog
Я создаю AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
...
AlertDialog alert = builder.create();
alert.show();
Через некоторое время я хочу изменить сообщение AlertDialog, не закрывая его.
Является ли это возможным?
Ответы
Ответ 1
Да, вы можете.
Например, если вы создаете свой собственный диалог, используя свой собственный макет, вы можете установить идентификатор для каждого из представлений, а затем получить доступ к каждому из них (например, textView) и установить его новый текст, когда захотите.
Ответ 2
Договорились с разработчиком Android. Вы также можете использовать
TextView messageView = (TextView) alert.findViewById(android.R.id.message);
Чтобы получить контроль над messageTextView AlertDialog. Тогда вы можете установить новый текст там.
Ответ 3
Используйте alert.setMessage()
вместо builder.setMessage()
. Вызовите alert.setMessage() и установите сообщение своего диалога в любое время.
Пример:
AlertDialog.Builder dialogBuilder;
AlertDialog alertDialog;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dialogBuilder = new AlertDialog.Builder(MainActivity.this);
alertDialog = dialogBuilder.create();
}
public void showAlert(int caller) {
if(alertDialog != null && !alertDialog.isShowing()) {
switch (caller){
case 1:
alertDialog.setMessage("First method call");
break;
case 2:
alertDialog.setMessage("Second method call");
break;
case 3:
alertDialog.setMessage("Third method call");
break;
}
alertDialog.show();
}
}
Ответ 4
Установите OnClickListener из основного сеттера следующим образом:
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity())
.setTitle(getResources().getString(R.string.dialog_title))
.setMessage("Waiting ...")
.setNeutralButton(R.string.check, null);
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
Button b_neutral = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL);
b_neutral.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView tv_message = (TextView) alertDialog.findViewById(android.R.id.message);
tv_message.setText("Works ...");
}
});