首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载RSS feed时带有进度条的AsyncTask

加载RSS feed时带有进度条的AsyncTask
EN

Stack Overflow用户
提问于 2011-11-28 09:00:31
回答 1查看 368关注 0票数 0

这是我第一次尝试使用AsyncTask作为进度条。我使用了三种方法:

onPostExecute()onPreExecute()doInBackground()

这是我的班级:

代码语言:javascript
复制
public class BackgroundAsyncTask extends
       AsyncTask<Void, Integer, Void> {
          private ProgressDialog dialog;
        int myProgress;

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub

             dialog.dismiss();


        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
              dialog = ProgressDialog.show(nea.this, "", "Loading. Please wait...", true);
            myProgress = 0;
        }

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub
            loadFeed();
            return null;
        }


}

不幸的是,这不是running.loadFeed();是我加载rss提要的类。这是我的logCat:

代码语言:javascript
复制
11-28 02:59:57.968: E/OSFP.News(409): Only the original thread that created a view hierarchy can touch its views.
11-28 02:59:57.968: E/OSFP.News(409): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
11-28 02:59:57.968: E/OSFP.News(409):   at android.view.ViewRoot.checkThread(ViewRoot.java:3020)
11-28 02:59:57.968: E/OSFP.News(409):   at android.view.ViewRoot.invalidateChild(ViewRoot.java:647)
11-28 02:59:57.968: E/OSFP.News(409):   at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:673)
11-28 02:59:57.968: E/OSFP.News(409):   at android.view.ViewGroup.invalidateChild(ViewGroup.java:2511)
11-28 02:59:57.968: E/OSFP.News(409):   at android.view.View.invalidate(View.java:5332)
11-28 02:59:57.968: E/OSFP.News(409):   at android.widget.AbsListView.resetList(AbsListView.java:1192)
11-28 02:59:57.968: E/OSFP.News(409):   at android.widget.ListView.resetList(ListView.java:560)
11-28 02:59:57.968: E/OSFP.News(409):   at android.widget.ListView.setAdapter(ListView.java:489)
11-28 02:59:57.968: E/OSFP.News(409):   at android.app.ListActivity.setListAdapter(ListActivity.java:265)
11-28 02:59:57.968: E/OSFP.News(409):   at kostas.menu.olympiakos.nea.loadFeed(nea.java:99)
11-28 02:59:57.968: E/OSFP.News(409):   at kostas.menu.olympiakos.nea.access$0(nea.java:74)
11-28 02:59:57.968: E/OSFP.News(409):   at kostas.menu.olympiakos.nea$BackgroundAsyncTask.doInBackground(nea.java:225)
11-28 02:59:57.968: E/OSFP.News(409):   at kostas.menu.olympiakos.nea$BackgroundAsyncTask.doInBackground(nea.java:1)
11-28 02:59:57.968: E/OSFP.News(409):   at android.os.AsyncTask$2.call(AsyncTask.java:185)
11-28 02:59:57.968: E/OSFP.News(409):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
11-28 02:59:57.968: E/OSFP.News(409):   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
11-28 02:59:57.968: E/OSFP.News(409):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
11-28 02:59:57.968: E/OSFP.News(409):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
11-28 02:59:57.968: E/OSFP.News(409):   at java.lang.Thread.run(Thread.java:1019)
11-28 02:59:57.984: W/dalvikvm(409): threadid=11: thread exiting with uncaught exception (group=0x40015578)
11-28 02:59:58.000: E/AndroidRuntime(409): FATAL EXCEPTION: AsyncTask #2
11-28 02:59:58.000: E/AndroidRuntime(409): java.lang.RuntimeException: An error occured while executing doInBackground()
11-28 02:59:58.000: E/AndroidRuntime(409):  at android.os.AsyncTask$3.done(AsyncTask.java:200)
11-28 02:59:58.000: E/AndroidRuntime(409):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
11-28 02:59:58.000: E/AndroidRuntime(409):  at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
11-28 02:59:58.000: E/AndroidRuntime(409):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
11-28 02:59:58.000: E/AndroidRuntime(409):  at java.util.concurrent.FutureTask.run(FutureTask.java:138)
11-28 02:59:58.000: E/AndroidRuntime(409):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
11-28 02:59:58.000: E/AndroidRuntime(409):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
11-28 02:59:58.000: E/AndroidRuntime(409):  at java.lang.Thread.run(Thread.java:1019)
11-28 02:59:58.000: E/AndroidRuntime(409): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
11-28 02:59:58.000: E/AndroidRuntime(409):  at android.os.Handler.<init>(Handler.java:121)
11-28 02:59:58.000: E/AndroidRuntime(409):  at android.widget.Toast.<init>(Toast.java:68)
11-28 02:59:58.000: E/AndroidRuntime(409):  at android.widget.Toast.makeText(Toast.java:231)
11-28 02:59:58.000: E/AndroidRuntime(409):  at kostas.menu.olympiakos.nea.loadFeed(nea.java:121)
11-28 02:59:58.000: E/AndroidRuntime(409):  at kostas.menu.olympiakos.nea.access$0(nea.java:74)
11-28 02:59:58.000: E/AndroidRuntime(409):  at kostas.menu.olympiakos.nea$BackgroundAsyncTask.doInBackground(nea.java:225)
11-28 02:59:58.000: E/AndroidRuntime(409):  at kostas.menu.olympiakos.nea$BackgroundAsyncTask.doInBackground(nea.java:1)
11-28 02:59:58.000: E/AndroidRuntime(409):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
11-28 02:59:58.000: E/AndroidRuntime(409):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
11-28 02:59:58.000: E/AndroidRuntime(409):  ... 4 more
EN

回答 1

Stack Overflow用户

发布于 2011-11-28 09:05:02

在Android中,您不能在非UI线程中创建或访问UI。根据您的调用堆栈,您将在线程中创建Toast对话框。我想这让它崩溃了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8290442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档