4
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
ListDialog.setPositiveButton(R.string.str_choose, new YesListener());
ListDialog.setNegativeButton(R.string.str_cancel, new NoListener());
dialog.show();

上面的代码是我的。
我可以通过单击按钮关闭对话框。
但是,如果我想在不单击任何按钮的情况下将其关闭。
我该怎么做?

4

3 回答 3

4

使用处理程序来延迟对Dialog.dismiss(). 这是一个例子。

在您的 中定义适当的实例变量Activity

// number of milliseconds to wait (2 seconds, in this example).
public static final int DELAYED_RESPONSE = 2000;
// define a handler as a private instance variable in your Activity.
private Handler handler = new Handler();

使用以下代码发布一个新的,将在几毫秒Runnable后关闭您的对话框:DELAYED_REPONSE

handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        dismissDialog();
    }
}, DELAYED_RESPONSE);

请注意,此代码假定您Activity实现了一个方法,该方法dismissDialog()将相应地关闭您的对话框。

于 2012-05-04T02:35:35.993 回答
2

最好的方法是Handler在你的 UI 线程上创建一个 looper,然后发布一个延迟MessageRunnable执行的Dialog.dismiss().

于 2012-05-04T02:12:11.660 回答
0

您可以通过这样做使用设置setCancelable(true),您可以按设备的 BACK 按钮。例子:

AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setCancelable(true).show();
于 2012-05-04T02:14:31.510 回答