0

我为 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

4

2 回答 2

1

您不应该使用 a Thread,而是使用AsyncTask. 创建并显示DialoginAsyncTask#onPreExecute()和 call Dialog#dismiss()in AsyncTask#onPostExecute()

于 2013-11-10T00:51:11.997 回答
0

使用AsyncTask是最好的主意。如果您不想这样做,请尝试以下操作

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

AlertDialog alert = builder.create();

alert.show();

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

于 2013-11-10T01:37:18.637 回答