我需要在android裏顯示Asynctask
裏面的Alertdialog
,但是它在throws異常中不能顯示。android中的asynctask裏面的alert對話框
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()
謝謝。
我需要在android裏顯示Asynctask
裏面的Alertdialog
,但是它在throws異常中不能顯示。android中的asynctask裏面的alert對話框
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()
謝謝。
不可能從後臺線程操縱UI。使用處理程序或AsyncTask的onPre/Post方法。
我認爲this可能是您的問題 - 您無法在doInBackground中顯示對話框。
在onPostExecute()方法而不是doInBackground中顯示對話框。
希望幫助
您可以直接從doInBackground()調用publishProgress()和onProgressUpdate與UI操作()。
從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();
}
});