Я создаю AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
...
AlertDialog alert = builder.create();
alert.show();
Через некоторое время я хочу изменить сообщение AlertDialog, не закрывая его.
Является ли это возможным?
Я создаю AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
...
AlertDialog alert = builder.create();
alert.show();
Через некоторое время я хочу изменить сообщение AlertDialog, не закрывая его.
Является ли это возможным?
Да, вы можете.
Например, если вы создаете свой собственный диалог, используя свой собственный макет, вы можете установить идентификатор для каждого из представлений, а затем получить доступ к каждому из них (например, textView) и установить его новый текст, когда захотите.
Договорились с разработчиком Android. Вы также можете использовать
TextView messageView = (TextView) alert.findViewById(android.R.id.message);
Чтобы получить контроль над messageTextView AlertDialog. Тогда вы можете установить новый текст там.
Используйте 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();
}
}
Установите 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 ...");
}
});