AlertDialog с тайм-аутом - PullRequest
       1

AlertDialog с тайм-аутом

1 голос
/ 13 апреля 2011

Я хочу создать AlertDialog с таймером в нем.По сути, я хочу, чтобы диалоговое окно исчезло, если пользователь не примет решение о кнопках в диалоговом окне через 30 секунд.Я могу создать диалог, используя AlertDialog Builder, но кажется, что я не могу обновить текст с помощью метода .setMessage () после того, как метод .show () был выполнен.?

Так что в приведенном ниже коде, если я запускаю метод .setMessage () после метода .show (), я ничего не вижу.Это говорит мне о том, что я не могу обновить текст в диалоговом окне в режиме реального времени.

// Create the alert dialog with a alert builder.
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Confirm Settings Change")
           .setCancelable(false)
           .setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   this.finish();
               }
           })
           .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
               }
           });
    alert = builder.create();
    alert.setMessage("test");
    alert.show();

Ответы [ 3 ]

2 голосов
/ 13 апреля 2011

Я думаю, вам нужно было предварительно позвонить setMessage() хотя бы один раз, прежде чем звонить show(), чтобы иметь возможность позвонить снова после этого.Вы можете установить его как пустое или временное значение, а затем обновить его:

alert.setMessage("test");
alert.show();
...
alert.setMessage("test again");
1 голос
/ 13 апреля 2011

Я бы рекомендовал раздувать пользовательский диалог из XML, чтобы вы могли получить дескриптор TextView (или чего-либо еще), который вы хотите изменить в своем коде. Это действительно просто:

http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog

0 голосов
/ 09 июля 2013

Вы можете сделать это с помощью ProgressDialog:

public Context ioContext;
private ProgressDialog ioProgressDialog;


ioProgressDialog = ProgressDialog.show(ioContext, "", "This is my dialog!", true);
ioProgressDialog.setMessage(Html.fromHtml("<font color='black'>" + isMensaje + "</font>"));
...