Java onPostExecute()中的ArrayList空指针异常

Java onPostExecute()中的ArrayList空指针异常,java,android,arraylist,nullpointerexception,Java,Android,Arraylist,Nullpointerexception,正在ArrayList中获取NullPointerException。我使用下面的行记录ArrayList的大小,但我总是得到NPE 原因可能是什么 Log.d("catArrayList:Size:New", ""+categoryArrayList.size()); 下面是更多的代码: protected void onPostExecute(Boolean result) { dialog.cancel();

正在ArrayList中获取
NullPointerException
。我使用下面的行记录ArrayList的大小,但我总是得到NPE

原因可能是什么

 Log.d("catArrayList:Size:New", ""+categoryArrayList.size());
下面是更多的代码:

    protected void onPostExecute(Boolean result) {
        dialog.cancel();                 

        Log.d("catArrayList:Size", ""+categoryArrayList.size());
        Log.d("typArrayList:Size", ""+typeArrayList.size());
        Log.d("serArrayList:Size", ""+serviceArrayList.size());

        Log.d("cArrayList:Size", ""+cArrayList.size());
        Log.d("tArrayList:Size", ""+tArrayList.size());
        Log.d("sArrayList:Size", ""+sArrayList.size());

        Category c = categoryArrayList.get(0);      
        typeArrayList = c.getTypeArrayList();
        Log.d("catArrayList:Size:New", ""+categoryArrayList.size());

        for(int i=0;i<typeArrayList.size();i++) {
            tArrayList.add(typeArrayList.get(i).getName());
        }

        spinner1.setAdapter(new ArrayAdapter<String>(CategoryActivity.this,
                 android.R.layout.simple_spinner_dropdown_item,
                 cArrayList));

        spinner2.setAdapter(new ArrayAdapter<String>(CategoryActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                tArrayList));

        spinner3.setAdapter(new ArrayAdapter<String>(CategoryActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                sArrayList));

     }

如果NPE在此行抛出:

    Log.d("catArrayList:Size:New", ""+categoryArrayList.size());
然后抛出它的原因是
categoryArrayList
null
。。。在节目的那一点上

检查该变量是否已正确初始化

我还强烈怀疑您正在运行的代码与您在问题中向我们展示的代码不同。根据我的理解,
categoryArrayList
在该点不可能为
null
。如果是,那么NPE将在之前被抛出两行:

    Category c = categoryArrayList.get(0);
实际上,如果应用程序是多线程的,并且另一个线程与运行此方法的线程并行更新
categoryArrayList
,那么该变量可能会由于争用条件而变为null。然而,我预计这种情况只会偶尔发生

我想,另一种可能是
c.getTypeArrayList()
调用正在更新
categoryArrayList
作为副作用


第三种可能性是NPE不会发生在你说的那一行。

在哪一行获得NPE?这是第178行的行号,“+categoryArrayList.Size()”;兄弟因为
categoryArrayList
为空。我们不知道为什么,因为我们不知道它来自哪里。categoryArrayList为null?在我看来,您应该发布getTypeArrayList()的主体代码
    Category c = categoryArrayList.get(0);