Android 异步任务出错

Android 异步任务出错,android,android-asynctask,Android,Android Asynctask,我在AsynTask遇到问题,不知道该怎么办。。。 我对另一门课也做了同样的事情,它似乎工作正常!但这一次,我得到了一个错误,我不明白 这是LogCat: 05-28 22:48:09.271: W/System.err(28530): java.util.concurrent.ExecutionException: java.lang.NullPointerException 05-28 22:48:09.271: W/System.err(28530): at java.util.co

我在AsynTask遇到问题,不知道该怎么办。。。 我对另一门课也做了同样的事情,它似乎工作正常!但这一次,我得到了一个错误,我不明白

这是LogCat:

05-28 22:48:09.271: W/System.err(28530): java.util.concurrent.ExecutionException: java.lang.NullPointerException
05-28 22:48:09.271: W/System.err(28530):    at java.util.concurrent.FutureTask.report(FutureTask.java:94)
05-28 22:48:09.271: W/dalvikvm(28530): threadid=11: thread exiting with uncaught exception (group=0x41f6dac8)
05-28 22:48:09.271: W/System.err(28530):    at java.util.concurrent.FutureTask.get(FutureTask.java:160)
05-28 22:48:09.271: W/System.err(28530):    at android.os.AsyncTask.get(AsyncTask.java:482)
05-28 22:48:09.271: W/System.err(28530):    at com.example.basicmaponline.Entidade.onCreate(Entidade.java:46)
05-28 22:48:09.271: W/System.err(28530):    at android.app.Activity.performCreate(Activity.java:5250)
05-28 22:48:09.271: W/System.err(28530):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
05-28 22:48:09.271: W/System.err(28530):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210)
05-28 22:48:09.271: W/System.err(28530):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2296)
05-28 22:48:09.271: W/System.err(28530):    at android.app.ActivityThread.access$700(ActivityThread.java:151)
05-28 22:48:09.271: W/System.err(28530):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
05-28 22:48:09.271: W/System.err(28530):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-28 22:48:09.271: W/System.err(28530):    at android.os.Looper.loop(Looper.java:137)
05-28 22:48:09.271: W/System.err(28530):    at android.app.ActivityThread.main(ActivityThread.java:5293)
05-28 22:48:09.271: W/System.err(28530):    at java.lang.reflect.Method.invokeNative(Native Method)
05-28 22:48:09.271: W/System.err(28530):    at java.lang.reflect.Method.invoke(Method.java:511)
05-28 22:48:09.271: W/System.err(28530):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
05-28 22:48:09.271: W/System.err(28530):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
05-28 22:48:09.271: W/System.err(28530):    at dalvik.system.NativeStart.main(Native Method)
05-28 22:48:09.271: W/System.err(28530): Caused by: java.lang.NullPointerException
05-28 22:48:09.271: W/System.err(28530):    at com.mlab.android.basicoverlays.PostgreSQL.getEntidade(PostgreSQL.java:114)
05-28 22:48:09.271: W/System.err(28530):    at com.example.basicmaponline.Entidade$loadDatabase.doInBackground(Entidade.java:175)
05-28 22:48:09.271: W/System.err(28530):    at com.example.basicmaponline.Entidade$loadDatabase.doInBackground(Entidade.java:1)
05-28 22:48:09.271: W/System.err(28530):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-28 22:48:09.271: W/System.err(28530):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-28 22:48:09.271: W/System.err(28530):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-28 22:48:09.271: W/System.err(28530):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-28 22:48:09.271: W/System.err(28530):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-28 22:48:09.271: W/System.err(28530):    at java.lang.Thread.run(Thread.java:856)
05-28 22:48:09.281: E/AndroidRuntime(28530): FATAL EXCEPTION: AsyncTask #1
05-28 22:48:09.281: E/AndroidRuntime(28530): java.lang.RuntimeException: An error occured while executing doInBackground()
05-28 22:48:09.281: E/AndroidRuntime(28530):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at java.util.concurrent.FutureTask.run(FutureTask.java:239)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at java.lang.Thread.run(Thread.java:856)
05-28 22:48:09.281: E/AndroidRuntime(28530): Caused by: java.lang.NullPointerException
05-28 22:48:09.281: E/AndroidRuntime(28530):    at com.mlab.android.basicoverlays.PostgreSQL.getEntidade(PostgreSQL.java:114)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at com.example.basicmaponline.Entidade$loadDatabase.doInBackground(Entidade.java:175)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at com.example.basicmaponline.Entidade$loadDatabase.doInBackground(Entidade.java:1)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-28 22:48:09.281: E/AndroidRuntime(28530):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-28 22:48:09.281: E/AndroidRuntime(28530):    ... 4 more
这是我的代码,出错的地方

package com.example.basicmaponline;

import java.sql.SQLException;
import java.util.ArrayList;

import android.app.ActionBar;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.mlab.android.basicoverlays.PostgreSQL;
import com.mlab.android.basicoverlays.SQLbalcao;
import com.mlab.android.basicoverlays.SQLloja;

public class Balcoes extends ListActivity{

ArrayList<SQLbalcao> listaBalcao;
String[] lista;
SQLloja loja;

ProgressDialog progressDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    //Action Bar is the bar on the top of each activity !
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);

    Intent intent = getIntent();
    loja = (SQLloja) intent.getSerializableExtra("loja");

    if(listaBalcao == null){
        new loadDatabase().execute();
    }

    /*lista = new String[listaBalcao.size()];
    int i = 0;
    for(SQLbalcao balcao : listaBalcao){
        lista[i++] = balcao.getNome_entidade();
    }

    setListAdapter(new ArrayAdapter<String>(Balcoes.this, android.R.layout.simple_list_item_1,lista));*/
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);

    Intent ourIntent = new Intent("com.example.basicmaponline.ENTIDADE");
    ourIntent.putExtra("id_entidade", listaBalcao.get(position).getId_entidade());
    ourIntent.putExtra("id_loja", listaBalcao.get(position).getId_loja_cidadao());
    startActivity(ourIntent);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    //return super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.homeactionbar, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId()==R.id.lojasHome){
        Intent intent = new Intent("com.example.basicmaponline.MENU");
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
    }
    else {
        super.onBackPressed();
    }
    return true;
}

public class loadDatabase extends AsyncTask<Void, Void, ArrayList<SQLbalcao>>{

    @Override
    protected void onPreExecute()
    {
        progressDialog = new ProgressDialog(Balcoes.this); 
        progressDialog.setTitle("Processando...");
        progressDialog.setMessage("Por favor,espera...");
        progressDialog.setCancelable(true);
        //progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        //progressDialog.setMax(100);
        progressDialog.show();             
    }; 

    @Override
    protected ArrayList<SQLbalcao> doInBackground(Void... params) { 

        ArrayList<SQLbalcao> listaBalcoes = new ArrayList<SQLbalcao>();

        try {
            PostgreSQL pSQL = new PostgreSQL();
            listaBalcoes = pSQL.getBalcoesByOrder(pSQL.getBalcoes(loja.getId()));
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return listaBalcoes;

    }

    @Override
    protected void onPostExecute(ArrayList<SQLbalcao> listaBalcoes){
        listaBalcao = listaBalcoes;

        lista = new String[listaBalcao.size()];
        int i = 0;
        for(SQLbalcao balcao : listaBalcao){
            lista[i++] = balcao.getNome_entidade();
        }

        setListAdapter(new ArrayAdapter<String>(Balcoes.this, android.R.layout.simple_list_item_1,lista));

        progressDialog.dismiss();
    }

}

}
package com.example.basicmaponline;
导入java.sql.SQLException;
导入java.util.ArrayList;
导入android.app.ActionBar;
导入android.app.ListActivity;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入com.mlab.android.basicoverlays.PostgreSQL;
导入com.mlab.android.basicoverlays.SQLbalcao;
导入com.mlab.android.basicoverlays.SQLloja;
公共类Balcoes扩展了ListActivity{
ArrayList listaBalcao;
字符串[]lista;
SQLloja loja;
进行对话进行对话;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
//动作栏是每个活动顶部的栏!
ActionBar ActionBar=getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
Intent=getIntent();
loja=(SQLloja)intent.getSerializableExtra(“loja”);
if(listaBalcao==null){
新建loadDatabase().execute();
}
/*lista=新字符串[listaBalcao.size()];
int i=0;
for(SQLbalcao-balcao:listaBalcao){
lista[i++]=balcao.getNome_entidade();
}
setListAdapter(新的ArrayAdapter(Balcoes.this,android.R.layout.simple_list_item_1,lista))*/
}
@凌驾
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id){
//TODO自动生成的方法存根
super.onListItemClick(左、右、位置、id);
Intent-ourIntent=newintent(“com.example.basicmaponline.ENTIDADE”);
ourIntent.putExtra(“id_entidade”,listabalco.get(position.getId_entidade());
outextra(“id_loja”,listaBalcao.get(position.getId_loja_cidadao());
星触觉(ourIntent);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//TODO自动生成的方法存根
//返回super.onCreateOptions菜单(菜单);
MenuInflater充气机=getMenuInflater();
充气器。充气(右菜单。homeactionbar,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
if(item.getItemId()==R.id.lojasHome){
意向意向=新意向(“com.example.basicmaponline.MENU”);
intent.addFlags(intent.FLAG\u ACTIVITY\u CLEAR\u TOP);
星触觉(意向);
}
否则{
super.onBackPressed();
}
返回true;
}
公共类loadDatabase扩展异步任务{
@凌驾
受保护的void onPreExecute()
{
progressDialog=新建progressDialog(Balcoes.this);
progressDialog.setTitle(“Processando…”);
progressDialog.setMessage(“Por-favor,espera…”);
progressDialog.setCancelable(真);
//progressDialog.setProgressStyle(progressDialog.STYLE_水平);
//progressDialog.setMax(100);
progressDialog.show();
}; 
@凌驾
受保护的ArrayList doInBackground(Void…params){
ArrayList listaBalcoes=新的ArrayList();
试一试{
PostgreSQL pSQL=新的PostgreSQL();
listaBalcoes=pSQL.getbalcoesbylder(pSQL.getBalcoes(loja.getId());
}捕获(SQLE异常){
e、 printStackTrace();
}catch(classnotfounde异常){
e、 printStackTrace();
}
返回列表;
}
@凌驾
PostExecute上受保护的void(ArrayList listaBalcoes){
listabalcoo=listaBalcoes;
lista=新字符串[listaBalcao.size()];
int i=0;
for(SQLbalcao-balcao:listaBalcao){
lista[i++]=balcao.getNome_entidade();
}
setListAdapter(新的ArrayAdapter(Balcoes.this,android.R.layout.simple_list_item_1,lista));
progressDialog.disclose();
}
}
}

您的doInBackground似乎正在访问一个空变量。您应该进行调试以查看witch变量是否为null。

这一行可能会导致问题

listaBalcoes = pSQL.getBalcoesByOrder(pSQL.getBalcoes(loja.getId()));

请确保loja不为空。

尝试使用
Log.i(“指示符”,“1”)类似的东西在不同的位置,这样你就可以很容易地确定问题的位置。一切顺利,直到StartTactivity启动并发出隆隆声!:/如果没有行号,要找出准确的错误就有点困难了。@Damiii在前面的活动中检查是否发送了
extra(“loja”)
是的,我正在发送:)loja不可为空。我测试了它,loja不为空。嗯,我在pSQL.getbalcoesbylder中看到了我的代码,但缺少了一些内容。。。我不知道。。。可能是因为CMD-Z。。。。现在开始工作了:)谢谢!我做了您所做的,有一个名为“task”的变量可以为null。