我需要在android中显示Alertdialog
里面的Asynctask
,但它不会在throws异常中显示。
05-13 14:59:35.522: WARN/System.err(1179): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
感谢。
答案 0 :(得分:12)
无法从后台线程操纵UI。使用处理程序或AsyncTask的onPre / Post方法。
答案 1 :(得分:3)
在onPostExecute()方法中显示对话框,而不是doInBackground。
希望有所帮助
答案 2 :(得分:2)
我认为this可能是您的问题 - 您无法在doInBackground中显示对话框。
答案 3 :(得分:2)
从backGround线程到达UI线程没有问题(更清楚:来自doInBackground()方法):您只需在上下文中运行runOnUiThread()
方法。在我的情况下,我是从doInBackground()
身体调用它。
ContactsViewerActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(ContactsViewerActivity.this);
builder.setTitle("Connection problem..")
.setMessage("Could not connect to " + url + ", " +
"try changing your host in the settings to default one :" +
getResources().getString(R.string.default_server_ip) + ":" +
getResources().getString(R.string.default_server_port))
.setNegativeButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
答案 4 :(得分:0)
您可以直接从doInBackground()调用publishProgress(),并在onProgressUpdate()中使用UI进行操作。