首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在AsyncTask doInBackground中执行函数时出错

在AsyncTask doInBackground中执行函数时出错
EN

Stack Overflow用户
提问于 2011-10-10 22:41:05
回答 2查看 3.8K关注 0票数 0

我试图从一个URL加载一些图片。

我有一个私人的空虚让所有的工作。起作用了..。但是我有个问题,我想在我的图像加载的时候显示一个对话框的进度.

我正在尝试使用AsyncTask,但在执行doInBackground时遇到了问题!

这是我的密码:

代码语言:javascript
运行
复制
    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    new EjecutarTarea().execute();



}


    private  void Principal() {
    //Code to download images from URL
    }


    public class EjecutarTarea extends AsyncTask<Void, Void, Void> {

    protected void onPreExecute() {
        dialog = new ProgressDialog(StadioNenaActivity.this);
        dialog.setMessage("Cargando..");
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        dialog.show();
    }


    protected Void doInBackground(Void... Unsed) {

      Principal();  //i have an error here 
      return null;
    }

    protected void onProgressUpdate(Void... unused) {

    }

    protected void onPostExecute(Void unused) {
        dialog.dismiss();
    }
  }

谢谢你的帮助!

这是日志上的错误..。它在代码主体()的某些部分中返回null .

我不知道为什么,当我把校长放在Oncreate,它的工作很棒!

代码语言:javascript
运行
复制
   10-10 17:56:01.988: ERROR/AndroidRuntime(10907): FATAL EXCEPTION: AsyncTask #1
    10-10 17:56:01.988: ERROR/AndroidRuntime(10907): java.lang.RuntimeException: An      error    occured while executing doInBackground()
    10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at android.os.AsyncTask$3.done  (AsyncTask.java:200)
    10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
   10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
   10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
   10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
   10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
   10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
   10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at java.lang.Thread.run(Thread.java:1096)
   10-10 17:56:01.988: ERROR/AndroidRuntime(10907): Caused by: java.lang.NullPointerException
   10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:112)
  10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at org.json.JSONTokener.nextValue(JSONTokener.java:90)
  10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at org.json.JSONArray.<init>(JSONArray.java:87)
  10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at org.json.JSONArray.<init>(JSONArray.java:103)
  10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at Stadio.bacha.stadionena.StadioNenaActivity.Principal(StadioNenaActivity.java:121)
  10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at Stadio.bacha.stadionena.StadioNenaActivity$EjecutarTarea.doInBackground(StadioNenaActivity.java:262)
10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at Stadio.bacha.stadionena.StadioNenaActivity$EjecutarTarea.doInBackground(StadioNenaActivity.java:1)
10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-10 17:56:01.988: ERROR/AndroidRuntime(10907):     ... 4 more

当我这样走的时候:

代码语言:javascript
运行
复制
    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Principal();

}

它可以工作,但它不显示对话框的进度.

EN

回答 2

Stack Overflow用户

发布于 2011-10-10 23:02:56

问题是在调用NullPointerException时存在一个doInBackground()。确保在调用AsyncTask.execute()或提供某种阻塞机制之前所有数据都是可用的。

票数 0
EN

Stack Overflow用户

发布于 2014-01-14 14:07:59

确保你的网址是正确的。我得到这个错误是因为我使用了192.168.1.173/webroot路径..。我的意思是我们的http://部分作为url。在我试过之后

代码语言:javascript
运行
复制
http://192.168.1.173/web application path ...

效果很好。

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

https://stackoverflow.com/questions/7719489

复制
相关文章

相似问题

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