我有一个从线程执行的AsyncTask 。在onPreExecute()
方法我想改变一些TextView
秒,但我得到了以下错误(重述):Android:AsyncTask onPreExecute()方法不会在UI线程中执行
05-07 11:53:02.039: E/AndroidRuntime(7062): FATAL EXCEPTION: processBarcodeThread
05-07 11:53:02.039: E/AndroidRuntime(7062): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
.....
05-07 11:53:02.039: E/AndroidRuntime(7062): at android.widget.TextView.setText(TextView.java:2573)
05-07 11:53:02.039: E/AndroidRuntime(7062): at it.mbm.droid.activity.fragment.LabelAnagFragment$ReadFromServerTask.onPreExecute(LabelAnagFragment.java:301)
05-07 11:53:02.039: E/AndroidRuntime(7062): at android.os.AsyncTask.execute(AsyncTask.java:391)
这意味着onPreExecute()
未在UI线程上执行,但根据Android文档:
onPreExecute()在任务执行前在UI线程上调用。此步骤通常用于设置任务,例如通过在用户界面中显示进度条。
那么,我在哪里做错了?
PLZ也显示在预执行方法代码 – 2013-05-07 10:03:55
哪里是代码? ... – 2013-05-07 10:04:04
你是从doInBackground()引用它吗? – Blackbelt 2013-05-07 10:06:41