尝试访问/编辑共享首选项中的数据后出现错误

时间:2018-09-25 17:24:57

标签: java android

我有几个对象,这些对象是从json文件导入的,并显示在列表中。当应用打开时,它将获取json数据,并为每个数据创建一个唯一的对象。我只显示列表中的几个变量。

每个项目都有一个唯一的数字ID。我想用作Shared-Preferences键来为其保存布尔值。

如果为true,则将选中列表中的复选框;如果为false,则将不选中该复选框。

if (!icsp.getBoolean(UniqueID,false)) {
                    icsp.edit().putBoolean(UniqueID, false).apply();
                    myItem.setSelected(false);
                } else {
                    myItem.setSelected(true);
                    icsp.edit().putBoolean(UniqueID, true).apply();
                }

此代码处于mainactivity中,并在“ for”循环中为每个对象运行。我的问题是,每当我要编辑或访问此代码或我尝试过的任何其他代码中的sharedpreference时,都会出现此错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{yasanx.owitemtracker/yasanx.owitemtracker.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.content.SharedPreferences.getBoolean(java.lang.String, boolean)' on a null object reference

我已经进行了很多搜索,但找不到关于为什么发生这种情况的任何答案。

编辑:我见过一些人说我必须使用“ if”检查是否为空,并避免这种情况,但是在此基于数据的项目中,我不应该在以下任何空值 ALSO

“!icsp.getBoolean(UniqueID,false)”

有一个“默认值”,所以如果它为null,它将使用false代替,对吧? .am我缺少什么吗?

0 个答案:

没有答案