如何关闭alertdialog没有按钮

时间:2013-11-10 00:39:32

标签: android

我为android创建了一个查询应用程序数据库,我为用户设置了一个进度条,以查看搜索的进度,我输入了一个警告对话框。

接下来出现问题:

- 一切都很完美,线程活动会在我告诉你时发生变化,但随后会从屏幕上的进度条返回AlertDialog活动。

我想知道如何在没有按钮的情况下说,当线程到达4时,AlertDialog被关闭,因为当你想要进行另一次搜索时它非常糟糕,附加了运行alerdialog的方法代码。

 private void AlertCargando(){

   final Handler mHandler = new Handler();
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(Buscar.this);

    //Crea el dialogo
    alertDialog.setTitle("Buscando...");

    final ProgressBar barra = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
    barra.setProgress(0);
    barra.setMax(4);
    mProgressStatus = 0;

    new Thread(new Runnable() {
        public void run() {
            ComprobarDatos();

            while (mProgressStatus < 4) {

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                mProgressStatus = SumaUno(mProgressStatus);

                mHandler.post(new Runnable() {
                    public void run() {
                        barra.setProgress(mProgressStatus);

                    }
                });
            }

//Here i want close the alerDialog
            if(mProgressStatus == 4){
        startActivity(i);
                               }


        }
    }).start();


    alertDialog.setView(barra);
    // Showing Alert Message

    alertDialog.show();
}

这里的方法是“SumaUno”

private int SumaUno(int numero){

    numero = numero++;

    return numero;
}

我提醒你,一切都很完美,我只是想知道alerdialog有多接近。

谢谢你= D

2 个答案:

答案 0 :(得分:1)

您不应该使用Thread,而应使用AsyncTask。在Dialog中创建并显示AsyncTask#onPreExecute(),然后在Dialog#dismiss()中致电AsyncTask#onPostExecute()

答案 1 :(得分:0)

使用AsyncTask是最好的主意。如果您不想这样做,请尝试按照

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

AlertDialog alert = builder.create();

alert.show();
然后,您可以在警报(而不是构建器)上调用alert.cancel()方法