抓到错误" NullPointerException"即使有数据列表的数据

时间:2014-05-23 11:50:16

标签: android listview arraylist nullpointerexception

捕获的错误是“NullPointerException”。但是当我调试时,Arraylist数据中有一些东西。该应用程序没有停止,但也没有发生任何响应。我的代码是这样的:

 public void sendDestination_zhu(View v){
    tryconnect tc= new tryconnect();
    List<String> sR=tc.doInBackground();
    try{
        List<String> data=new ArrayList<String>();
        data=sR;
        ListView list = (ListView)findViewById(R.id.listView);
        ArrayAdapter<String> adapter=new ArrayAdapter<String> (FragmentHandler.this,R.layout.single_row,R.id.parkingplace,data);
        list.setAdapter(adapter);
    }catch(Exception e){
        e.printStackTrace();
    }
}

3 个答案:

答案 0 :(得分:0)

您正在移动List data中的指针指向sR。删除行data=sR

答案 1 :(得分:0)

在调试时,很可能你的doInBackground()被执行了,你将获得sR中的数据。但直接运行你的sR将为null。因此给予NPE。尝试使用日志打印值并查看值。

答案 2 :(得分:0)

您使用Asynctask的方法是错误的。 doInBackground方法应该由我们自己创建的Asynctask子类调用。永远不应该直接称之为。

请参阅example.

在您的场景中发生的事情是,即使在Asynctask完成之前,下面的代码也会执行,因此NUll指针也会执行。

try{
    List<String> data=new ArrayList<String>();
    data=sR;
    ListView list = (ListView)findViewById(R.id.listView);
    ArrayAdapter<String> adapter=new ArrayAdapter<String> (FragmentHandler.this,R.layout.single_row,R.id.parkingplace,data);
    list.setAdapter(adapter);
}catch(Exception e){
    e.printStackTrace();
}

仅为方便起见,onPostExecute()方法在AsyncTask类中可用。请参阅链接和许多其他在线提供。