Android 进度对话框未关闭

Android 进度对话框未关闭,android,progressdialog,Android,Progressdialog,下面的代码显示进度对话框,延迟5秒。5秒钟后,您想关闭对话框,但在下面的示例中不发生 谁能帮我一下哪里出了错 new CountDownTimer(5000, 1000) { public void onTick(long millisUntilFinished) { // You don't need anything here dialog= ProgressDialog.show(SchedulerActivity.this,"Delay",

下面的代码显示进度对话框,延迟5秒。5秒钟后,您想关闭对话框,但在下面的示例中不发生

谁能帮我一下哪里出了错

new CountDownTimer(5000, 1000) 
{
    public void onTick(long millisUntilFinished) 
    {
       // You don't need anything here
       dialog= ProgressDialog.show(SchedulerActivity.this,"Delay", "Please wait...."+ millisUntilFinished/1000 + " Second(s)",true);
    }

    public void onFinish() 
    {
       dialog.dismiss();
    }

 }.start();

而不是将进度对话框的值指定给对话框变量。创建进度对话框对象并如下所示设置其标题

ProgressDialog pd = new ProgressDialog(yourActivity.this);
pd.setMessage("what ever message you like");
pd.show();
onFinish()
中,请调用
pd.disease()

请在
onTick
方法中设置消息,如果尚未显示进度对话框,请在此方法中显示进度对话框

ProgressDialog pd = new ProgressDialog(yourActivity.this);
new CountDownTimer(5000, 1000) 
{
    public void onTick(long millisUntilFinished) 
    {
       // You don't need anything here
       pd.setMessage("what ever message you like");
        if (!pd.isShowing())
            pd.show();
    }

    public void onFinish() 
    {
       pd.dismiss();
    }

 }.start();

“滴答声”正在多次调用,这就是为什么您的对话框没有关闭

实施这个

new CountDownTimer(5000, 1000) {

            public void onTick(long millisUntilFinished) {
                // You don't need anything here
                if(!dialog.isShowing())
                {
                    dialog= ProgressDialog.show(mContext,"Delay", "Please wait...."+ millisUntilFinished/1000 + " Second(s)",true);
                }
            }
            public void onFinish() {
                dialog.dismiss();
            }
        }.start();
你在打电话吗

dialog=ProgressDialog.show(SchedulerActivity.this,“延迟”,“请等待…”+millisuntiltfinished/1000+“秒”,true)

在side
onTick()
方法中

它将在每个刻度处创建新的进度对话框实例。这可能会导致函数出现问题,在这种情况下,对话框不会关闭

请尝试以下代码

final ProgressDialog dialog = new ProgressDialog(DynamicView.this);
dialog.setTitle("Delay");
dialog.setMessage("Please wait...." + 5000 / 1000 + " Second(s)");
dialog.setIndeterminate(true);

new CountDownTimer(5000, 1000) {

    public void onTick(long millisUntilFinished) {
        // You don't need anything here
        dialog.setMessage("Please wait...." + millisUntilFinished / 1000 + " Second(s)");

        if (!dialog.isShowing())
            dialog.show();
    }

    public void onFinish() {
        if (dialog.isShowing())
            dialog.dismiss();
    }
}.start();
此代码的工作原理与您需要的相同。

您确定已触发onFinish()操作系统吗?