Android 尝试添加项后返回null的Arraylist
修正:改为.equals而不是使用==。然后我把它改成了subjects.isEmpty(),它也起了作用。我的问题不是如何比较字符串。这恰好是我的代码遇到的问题。谢谢大家的回复 我有一个ArrayList,作为字符串从sharedprefs加载,并将其转换回ArrayList。当我装入它时,我会检查它是否是空的。如果它是空的,我用34个对象填充它。然后我尝试使用ArrayList,但得到了一个空对象引用 我在onCreate之外声明我的变量Android 尝试添加项后返回null的Arraylist,android,nullpointerexception,gson,sharedpreferences,Android,Nullpointerexception,Gson,Sharedpreferences,修正:改为.equals而不是使用==。然后我把它改成了subjects.isEmpty(),它也起了作用。我的问题不是如何比较字符串。这恰好是我的代码遇到的问题。谢谢大家的回复 我有一个ArrayList,作为字符串从sharedprefs加载,并将其转换回ArrayList。当我装入它时,我会检查它是否是空的。如果它是空的,我用34个对象填充它。然后我尝试使用ArrayList,但得到了一个空对象引用 我在onCreate之外声明我的变量 private ArrayList<Integ
private ArrayList<Integer> subjects = new ArrayList<>();
我认为你的问题在于:
if(jsonString == ""){
subjects = new ArrayList<>();
for(int i = 0; 34 > i; i++){
subjects.add(0);
}
}
但是,如果不完整地查看代码,很难说 您正在空对象中调用方法get。在您的问题中,您没有指定在哪一点运行该代码,但是您可能在使用它之前忘记初始化ArrayListsubjects,或者您为该变量分配了一个null对象。为了补充这一点,您也没有使用
=
来比较字符串。您应该使用jsonString.equals(“”
),或者只使用isEmpty()
我重新初始化了ArrayList,因为当我没有初始化时,它抛出了一个错误。然后我需要查看您的所有代码。整体而言。有些东西关闭了。将其更改为jsonString.equals(“”)有效。您需要先学习一些java的基础知识。。。外汇如何比较strings@Selvin我不确定那是个好目标。OP的某个地方显然有一个空变量,但我们没有任何主题是空的,因为它从来没有初始化过,因为缺少java的基础知识(字符串比较)@Selvin为什么它没有初始化subjects=gson.fromJson(jsonString,type)因为subjects=newarraylist()如果。。。休息是不相关的。。。修正比较将修正npe。。。但不是全部代码
if(subjects.get(0) == 1){
if(jsonString == ""){
subjects = new ArrayList<>();
for(int i = 0; 34 > i; i++){
subjects.add(0);
}
}
//You also need to use .equals() method to compare strings
if(jsonString.equals("")){
for(int i = 0; 34 > i; i++){
subjects.add(0);
}
}