【发布时间】:2019-03-27 00:37:45
【问题描述】:
我正在尝试从共享首选项中获取数据并将该数据插入到列表中,但它让我出错。虽然我已经初始化了列表,但仍然出现此错误
java.lang.NullPointerException:尝试调用接口方法 空对象上的“布尔 java.util.List.add(java.lang.Object)” 参考
Information info = new Information(name, mobile, email, zone, type);
List<Information> listItems = new ArrayList<>();
SharedPrefManager sharedPrefManager = new SharedPrefManager(getActivity());
listItems = sharedPrefManager.getDataFromSharedPreferences("info");
listItems.add(info);
sharedPrefManager.setDataToSharedPreferences("info", listItems);
这是我的 SharedPrefManager getData 函数
public List<Information> getDataFromSharedPreferences(String key) {
Gson gson = new Gson();
SharedPreferences sharedPref = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
String jsonPreferences = sharedPref.getString(key, null);
Type type = new TypeToken<List<Information>>() {
}.getType();
List<Information> contactList = gson.fromJson(jsonPreferences, type);
return contactList;
}
【问题讨论】:
-
sharedPref.getString(key, null);当然你得到了一个 NPE。如果没有指定键的字符串首选项,jsonPreferences将为空。您需要检查这种情况,如果是,则返回一个空列表。 -
非常感谢兄弟。浪费了一整天的时间。
标签: android list arraylist sharedpreferences