Java AsyncTask中的NullPointerException
这是我的AsyncTask类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
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。把变量、引用和对象的概念分开是值得的——它们是非常不同的概念,把它们混在一起会造成混乱。