捕获的错误是“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();
}
}
答案 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类中可用。请参阅链接和许多其他在线提供。