【发布时间】:2014-11-05 10:48:42
【问题描述】:
我正在尝试将AlertDialog 呼叫到AsyncTask。我编写了这段代码并且它可以工作,但是当我在AlertDialog 中选择项目时AlertDialog 冻结但前台用户界面正在工作。请帮助我为我的任务编写正确的代码,或者请帮助我在选择项目后修复冻结AlertDialog。我试图在uiHandler.getLooper.suit() 行之前调用dismiss() 方法,但没有任何改变。
@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:为了便于阅读,它不是完整的代码。
【问题讨论】:
-
uiHandler.getLooper().quit();在 onClick 中调用。通过删除它来检查..
-
@Aun,如果我删除它 Looper 将不会停止。关闭对话框后什么也没有发生。
标签: android android-asynctask handler android-alertdialog