java.lang.RuntimeException:执行doInBackground()时出错,由NullPointerException引起
我目前正在为大学开发一款android应用程序,但我在这方面遇到了麻烦 每次我试图在按下应用程序按钮(Trabalhadoresinactivity)后在应用程序中列出工作者(trabalhadores)时,都会发生这种情况,应用程序关闭。问题似乎出在Trabalhadores的ArrayList中的空指针上,但我找不到它的位置 我见过类似的问题,但通常只是ArrayList=null类型的情况,这不是我的情况,因为我是通过new ArrayList()启动ArrayList的 下面是代码和错误:java.lang.RuntimeException:执行doInBackground()时出错,由NullPointerException引起,java,android,arraylist,android-asynctask,Java,Android,Arraylist,Android Asynctask,我目前正在为大学开发一款android应用程序,但我在这方面遇到了麻烦 每次我试图在按下应用程序按钮(Trabalhadoresinactivity)后在应用程序中列出工作者(trabalhadores)时,都会发生这种情况,应用程序关闭。问题似乎出在Trabalhadores的ArrayList中的空指针上,但我找不到它的位置 我见过类似的问题,但通常只是ArrayList=null类型的情况,这不是我的情况,因为我是通过new ArrayList()启动ArrayList的 下面是代码和错误
com.example.androidd E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
Process: com.example.androidd, PID: 9294
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:365)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:784)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.ArrayList com.example.androidd.dto.ListaTrabalhadorPartialDTO.getTrabalhadores()' on a null object reference
at com.example.androidd.dto.Mapper.listaTrabalhadorPartialDTO2ListaTrabalhadorPartial(Mapper.java:121)
at com.example.androidd.controller.TrabalhadoresMainActivity$2.getResponseObject(TrabalhadoresMainActivity.java:138)
at com.example.androidd.network.GenericGetAsyncTask.doInBackground(GenericGetAsyncTask.java:37)
at com.example.androidd.network.GenericGetAsyncTask.doInBackground(GenericGetAsyncTask.java:15)
at android.os.AsyncTask$2.call(AsyncTask.java:345)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:784)
主要活动
public class TrabalhadoresMainActivity extends AppCompatActivity {
ListView lv;
ProgressBar pb;
ArrayList<TrabalhadorPartial> trabalhadorPartials;
ListViewAdapterTrabalhador adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_trabalhadores_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
pb = (ProgressBar) findViewById(R.id.progressBar);
pb.setVisibility(ProgressBar.INVISIBLE);
lv = (ListView) findViewById(R.id.listView);
trabalhadorPartials = new ArrayList<TrabalhadorPartial>();
adapter = new ListViewAdapterTrabalhador(this, R.layout.listview_trabalhador_item, trabalhadorPartials);
lv.setAdapter(adapter);
registerForContextMenu(lv);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(TrabalhadoresMainActivity.this,"Click: details",Toast.LENGTH_SHORT).show();
TrabalhadorPartial trabalhadorPartial = (TrabalhadorPartial) adapter.getItem(i);
Intent intent = new Intent(TrabalhadoresMainActivity.this, TrabalhadorActivity.class);
intent.putExtra(Utils.MODE,Utils.ACTIVITY_MODE_DETAILS);
intent.putExtra(Utils.ID, trabalhadorPartial.getId());
startActivity(intent);
}
});
getTrabalhadoresFromWS();
}
最后,问题似乎出在地图绘制者身上
public static ListaTrabalhadorPartial listaTrabalhadorPartialDTO2ListaTrabalhadorPartial(ListaTrabalhadorPartialDTO listaTrabalhadorPartialDTO) throws NullPointerException {
ArrayList<TrabalhadorPartial> trabalhadorPartials = new ArrayList<TrabalhadorPartial>();
ArrayList<TrabalhadorPartialDTO> trabalhadoresDTO = listaTrabalhadorPartialDTO.getTrabalhadores();
if(trabalhadoresDTO != null) {
for (TrabalhadorPartialDTO trabalhadorPartialDTO : trabalhadoresDTO) {
try {
TrabalhadorPartial trabalhadorPartial = trabalhadorPartialDTO2TrabalhadorPartial(trabalhadorPartialDTO);
trabalhadorPartials.add(trabalhadorPartial);
} catch (NullPointerException e) {
//does nothing. Actually, nothing is added to arraylist
}
}
}
ListaTrabalhadorPartial listaTrabalhadorPartial = new ListaTrabalhadorPartial(trabalhadorPartials);
return listaTrabalhadorPartial;
}
public static list atrabalhad或partial list atrabalhad或partialdto 2listatrabalhad或partial(listatrabalhad或partialdto listatrabalhad或partialdto)引发NullPointerException{
ArrayList trabalhadorPartials=新ArrayList();
ArrayList trabalhadoresDTO=listaTrabalhadorPartialDTO.getTrabalhadores();
if(trabalhadoresDTO!=null){
for(TrabalhadorPartialDTO TrabalhadorPartialDTO:trabalhadoresDTO){
试一试{
TrabalhadorPartial=trabalhadorPartialDTO2TrabalhadorPartial(trabalhadorPartialDTO);
添加(trabalhadorPartials);
}捕获(NullPointerException e){
//什么都不做。实际上,arraylist中没有添加任何内容
}
}
}
ListaTrabalhadorPartial ListaTrabalhadorPartial=新ListaTrabalhadorPartial(trabalhadorPartials);
返回全部或部分列表;
}
调试后,注意到它在该方法中的第二行“if”之前崩溃,调试器进入AsyncTask。尝试查看问题是否在XML处理程序中,但没有任何线索
非常感谢您的帮助。您好,您可以检查此
ListAtrabalHadorPartialTo ListAtrabalHadorPartialTo=XmlHandler.DeserializeXml2ListTrabalHadorPartialTo(httpResponse)
返回非空值。您好,您可以检查此ListAtrabalHadorPartialTo ListAtrabalHadorPartialTo=XmlHandler.DeserializeXml2ListTrabalHadorPartialTo(httpResponse)代码>返回一个非空值。
public static ListaTrabalhadorPartial listaTrabalhadorPartialDTO2ListaTrabalhadorPartial(ListaTrabalhadorPartialDTO listaTrabalhadorPartialDTO) throws NullPointerException {
ArrayList<TrabalhadorPartial> trabalhadorPartials = new ArrayList<TrabalhadorPartial>();
ArrayList<TrabalhadorPartialDTO> trabalhadoresDTO = listaTrabalhadorPartialDTO.getTrabalhadores();
if(trabalhadoresDTO != null) {
for (TrabalhadorPartialDTO trabalhadorPartialDTO : trabalhadoresDTO) {
try {
TrabalhadorPartial trabalhadorPartial = trabalhadorPartialDTO2TrabalhadorPartial(trabalhadorPartialDTO);
trabalhadorPartials.add(trabalhadorPartial);
} catch (NullPointerException e) {
//does nothing. Actually, nothing is added to arraylist
}
}
}
ListaTrabalhadorPartial listaTrabalhadorPartial = new ListaTrabalhadorPartial(trabalhadorPartials);
return listaTrabalhadorPartial;
}