【发布时间】:2016-07-28 11:27:59
【问题描述】:
我有一个简单的要求,我有一个在类级别声明的字符串数组,以便我可以在类中的任何地方使用它。
String image_url[];//Declared outside of any methods
//Initailzed image_url[] to img_url[]
public void showJSON(String json)
{
ParseJSON pj = new ParseJSON(json);
pj.parseJSON();
image_url= ParseJSON.img_url;
Toast.makeText(DisplayMagazine.this, "Image loc"+image_url[1], Toast.LENGTH_SHORT).show();
}
我想在以下方法中使用 image_url 数组:-
private ArrayList prepareData() {
ArrayList android_version = new ArrayList<>();
for (int i = 0; i < magazine_version_names.length; i++) {
MagazineVersion magazineVersion = new MagazineVersion();
magazineVersion.setMagazine_version_name(magazine_version_names[i]);
magazineVersion.setMagazine_image_url(image_url[i]);
android_version.add(magazineVersion);
}
return android_version;
}
当我运行此代码时,应用程序崩溃并在此行出现空指针异常:-
magazineVersion.setMagazine_image_url(image_url[i]);
这是 ParseJSON 的代码:-
public class ParseJSON
{
public static String[] magversion;
public static String[] img_url;
public static String[] download_url;
public static String[] sample_url;
public static String[] status_dl;
public static String[] status_sm;
public static String[] device_id;
public static final String JSON_ARRAY = "result";
public static final String KEY_MAGVER = "magversion";
public static final String KEY_IMGURL = "img_url";
public static final String KEY_DOWNLOADURL = "download_url";
public static final String KEY_SAMPLEURL = "sample_url";
public static final String KEY_STATUS_DL ="status_dl";
public static final String KEY_DEVICE_ID ="device_id";
private JSONArray magazines = null;
private String json;
public ParseJSON(String json){
this.json = json;
}
public void parseJSON(){
JSONObject jsonObject=null;
try {
jsonObject = new JSONObject(json);
magazines = jsonObject.getJSONArray(JSON_ARRAY);
magversion = new String[magazines.length()];
img_url = new String[magazines.length()];
download_url = new String[magazines.length()];
sample_url= new String[magazines.length()];
status_dl= new String[magazines.length()];
device_id= new String[magazines.length()];
for(int i=0;i<magazines.length();i++){
JSONObject jo = magazines.getJSONObject(i);
magversion[i] = jo.getString(KEY_MAGVER);
img_url[i] = jo.getString(KEY_IMGURL);
download_url[i] = jo.getString(KEY_DOWNLOADURL);
sample_url[i] = jo.getString(KEY_SAMPLEURL);
status_dl[i] = jo.getString(KEY_STATUS_DL);
device_id[i] = jo.getString(KEY_DEVICE_ID);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
我是编程新手,因此感谢您提供任何帮助或建议。谢谢。
【问题讨论】:
-
你能显示
ParseJSON(String)构造函数吗? -
提示:了解什么是字段,以及它们与您的类的关系是绝对必要的基本内容。如果你不知道这些事情,你最好让你的手指远离 android 编程。目前。重点是:不要试图学java做android编程。先学习java基础,再转向Android。其他任何事情都会给您带来一系列(可能很短)非常令人沮丧的“为什么这不起作用”的体验。简短,因为你很快就会失去动力。
-
@JordiCastilla 请检查我更新的问题我已经添加了 ParseJson 类,这就是我的构造函数的样子:- public ParseJSON(String json){ this.json = json; }
标签: java android arrays nullpointerexception