在android中的asynctask里面的警告对话框

时间:2011-05-13 09:51:53

标签: android android-layout

我需要在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()

感谢。

5 个答案:

答案 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进行操作。