Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.RuntimeException:执行doInBackground()时出错,由NullPointerException引起_Java_Android_Arraylist_Android Asynctask - Fatal编程技术网

java.lang.RuntimeException:执行doInBackground()时出错,由NullPointerException引起

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的 下面是代码和错误

我目前正在为大学开发一款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;
    }