Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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
Android 尝试添加项后返回null的Arraylist_Android_Nullpointerexception_Gson_Sharedpreferences - Fatal编程技术网

Android 尝试添加项后返回null的Arraylist

Android 尝试添加项后返回null的Arraylist,android,nullpointerexception,gson,sharedpreferences,Android,Nullpointerexception,Gson,Sharedpreferences,修正:改为.equals而不是使用==。然后我把它改成了subjects.isEmpty(),它也起了作用。我的问题不是如何比较字符串。这恰好是我的代码遇到的问题。谢谢大家的回复 我有一个ArrayList,作为字符串从sharedprefs加载,并将其转换回ArrayList。当我装入它时,我会检查它是否是空的。如果它是空的,我用34个对象填充它。然后我尝试使用ArrayList,但得到了一个空对象引用 我在onCreate之外声明我的变量 private ArrayList<Integ

修正:改为.equals而不是使用==。然后我把它改成了subjects.isEmpty(),它也起了作用。我的问题不是如何比较字符串。这恰好是我的代码遇到的问题。谢谢大家的回复

我有一个ArrayList,作为字符串从sharedprefs加载,并将其转换回ArrayList。当我装入它时,我会检查它是否是空的。如果它是空的,我用34个对象填充它。然后我尝试使用ArrayList,但得到了一个空对象引用

我在onCreate之外声明我的变量

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()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);
    }
}