Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何自动关闭自定义对话框_Java_Android_Android Alertdialog - Fatal编程技术网

Java 如何自动关闭自定义对话框

Java 如何自动关闭自定义对话框,java,android,android-alertdialog,Java,Android,Android Alertdialog,我想打开一个对话框。并在几秒钟后自动关闭,对话框中的按钮也应关闭对话框,无论先发生什么。但我找不到在时间结束后关闭对话框的正确方法 我使用下一个自定义对话框 private void okShowDialog(String title, String message){ vibrate(); final Dialog dialogo=new Dialog(Login.this); dialogo.setContentView(R.layout.okdialog);

我想打开一个对话框。并在几秒钟后自动关闭,对话框中的按钮也应关闭对话框,无论先发生什么。但我找不到在时间结束后关闭对话框的正确方法

我使用下一个自定义对话框

private void okShowDialog(String title, String message){
    vibrate();
    final Dialog dialogo=new Dialog(Login.this);
    dialogo.setContentView(R.layout.okdialog);
    dialogo.setCancelable(false);
    TextView errorTitle=dialogo.findViewById(R.id.lblTitleDialog);
    errorTitle.setText(title);
    TextView errorMessage=dialogo.findViewById(R.id.txtErrorDialog);
    errorMessage.setText(message);
    Button dialogButton = (Button) dialogo.findViewById(R.id.btnCont);
    dialogButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });
    dialogo.show();
}
对话框XML非常简单,它只显示标题、消息和按钮


这件事我已经讨论了好几天,不知道如何解决。

您可以尝试添加处理程序:

dialogo.show();

final Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
    @Override
    public void run()
    {
        // Close dialog after 1000ms
        dialogo.cancel();
    }
}, 1000);

1000毫秒(1秒)后,对话框将关闭。我认为您不必检查对话框是否用按钮关闭,当您再次调用关闭的对话框时,不会出现任何错误,但如果我不正确,只需添加一个布尔变量来控制对话框是否用按钮关闭。

您也可以使用Kotlin协程:

'build your dialog...'
dialog.setOnShowListener {
    CoroutineScope(Dispatchers.Main).launch {
        delay(length)
        dialog.dismiss()
    }
}
dialog.show()

其中“length”是您希望对话框显示的时间(以毫秒为单位)。

刚刚发现我忘了感谢您,非常感谢!!。。。这正是我所需要的