我为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
答案 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()
方法