Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.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 AsyncTask中的NullPointerException_Java_Android_Nullpointerexception - Fatal编程技术网

Java AsyncTask中的NullPointerException

Java AsyncTask中的NullPointerException,java,android,nullpointerexception,Java,Android,Nullpointerexception,这是我的AsyncTask类 class AsyncLoad extends AsyncTask<Void, Void, ArrayList<ListData>> { int i = 0; protected ArrayList<ListData>[] onPostExecute(ArrayList<ListData>... result) { return result; } protect

这是我的AsyncTask类

class AsyncLoad extends AsyncTask<Void, Void, ArrayList<ListData>> {

    int i = 0;

    protected ArrayList<ListData>[] onPostExecute(ArrayList<ListData>... result) {

        return result;
    }

    protected ArrayList<ListData> doInBackground(Void... parameter) {

        ArrayList<ListData> news = null;

        int[] id = { 1, 2, 3, 4, 5 };
        String[] title = { "title1", "title2", "title3", "title4", "title5" };
        String[] category = { "category1", "category2", "category3",
                "category4", "category5" };
        int[] image = { R.drawable.pic01, R.drawable.pic02, R.drawable.pic03,
                R.drawable.pic04, R.drawable.pic05, R.drawable.pic06 };

        for (i = 0; i <= id.length - 1; i++) {

            news.add(new ListData(id[i], title[i], category[i], image[i]));

        }

        return news;

    }
}
这是ListData.java:

package com.example.test2;

public class ListData {
int id;
String title;      
String category;          
int image;     


ListData(int _id, String _title, String _category, int _image) {
  id = _id;
  title = _title;
  category = _category;
  image = _image;     

}
}

在主要活动中,我只是执行AsynTask( AsyncLoad=新建AsyncLoad();load.execute(); )


请帮我找出我错的地方
ArrayList<ListData> news = null;
你认为那会怎样
news
永远不会有非空值,因此当您调用
news.add
时,您将得到一个
NullPointerException
。你想要的是:

List<ListData> news = new ArrayList<ListData>();
List news=new ArrayList();

(请注意,我是如何使用
ArrayList
作为具体实现的,但我更喜欢对接口进行编程,我将
news
变量本身设置为
List

是的。看看这个:

ArrayList<ListData> news = null;
你认为那会怎样
news
永远不会有非空值,因此当您调用
news.add
时,您将得到一个
NullPointerException
。你想要的是:

List<ListData> news = new ArrayList<ListData>();
List news=new ArrayList();

(注意我是如何使用
ArrayList
作为具体实现的,但我更喜欢对接口进行编程,我将
news
变量本身设置为
List
类型)

您从未实例化过列表
news
。您需要这样做:

ArrayList<ListData> news = new ArrayList<ListData>();
ArrayList news=new ArrayList();

您从未实例化您的列表
新闻
。您需要这样做:

ArrayList<ListData> news = new ArrayList<ListData>();
ArrayList news=new ArrayList();

新闻
是一个变量-没有“实例化”变量这回事。该变量已初始化,但为null。尝试区分变量、引用和对象的概念是值得的——它们是非常不同的概念,混淆它们会造成混乱。
news
是一个变量——没有“实例化”变量的事情。该变量已初始化,但为null。把变量、引用和对象的概念分开是值得的——它们是非常不同的概念,把它们混在一起会造成混乱。