具有超时的AlertDialog

时间:2011-04-12 22:04:43

标签: android alertdialog

我想创建一个带有计时器的AlertDialog。基本上,如果用户在30秒后没有对对话框中的按钮做出决定,我希望对话框消失。我可以使用AlertDialog构建器创建一个对话框,但似乎在执行.show()方法后无法使用.setMessage()方法更新文本。

关于我应该做什么的任何想法?

所以在下面的代码中,如果我在.show()方法之后运行.setMessage()方法,我什么也看不见。这告诉我,我无法实时更新对话框中的文本。

// 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 个答案:

答案 0 :(得分:2)

我认为您需要在调用setMessage()之前至少调用一次show(),以便之后能够再次调用它。您可以将其设置为空值或临时值,然后稍后更新:

alert.setMessage("test");
alert.show();
...
alert.setMessage("test again");

答案 1 :(得分:1)

我建议从XML中扩展自定义Dialog,以便您可以获得要在代码中更改的TextView(或其他)的句柄。这真的很容易:

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

答案 2 :(得分:0)

你可以使用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>"));