【发布时间】:2014-11-05 12:31:55
【问题描述】:
我正在尝试将AlertDialog 呼叫到AsyncTask。我编写了这段代码并且它可以工作,但是当我在AlertDialog 中选择项目然后调用uiHandler.getLooper().quit(); 继续代码处理时,AlertDialog 被冻结(不关闭,一直停留到活动完成)但 backgroundUI 继续处理。我认为这是因为AlertDialog 在无限循环结束之前没有时间执行dismiss() 方法。请帮我解决这个问题。我只需要在doInBackground 方法中执行此操作。
@Override
protected Void doInBackground(Void... arg0) {
Looper.prepare();
final Handler uiHandler = new Handler();
uiHandler.post(new Runnable() {
public void run() {
AlertDialog.Builder chooser = new AlertDialog.Builder(ctx);
facultyChooser.setTitle("Choose")
.setCancelable(false)
.setItems(faculties, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
uiHandler.getLooper().quit();
}
})
.create()
.show();
}
});
Looper.loop();
}
PS:为了便于阅读,它不是完整的代码。
【问题讨论】:
标签: android android-asynctask handler android-alertdialog