gpt4 book ai didi

java - Gson 和 SharedPreferences 导致 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 09:28:03 24 4
gpt4 key购买 nike

我正在尝试将自创建对象的 ArrayList 放入 SharedPreferences 中。虽然保存似乎有效,但调用 getSharedPreferences() 时出现以下错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object com.google.gson.Gson.fromJson(java.lang.String, java.lang.reflect.Type)' on a null object reference

我将其放入 SharedPreferences 的代码:

// FYI: gson = new Gson(); is set earlier on
// same goes for: ArrayList<MovieModel> movieModelList = new ArrayList<>();
// and: Type listType;

movieModelList.add(result);

String jsonMovieModelList = gson.toJson(movieModelList);

SharedPreferences prefs = getSharedPreferences("settings",
MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("jsonMovieModelList", jsonMovieModelList);
editor.apply();

以及 SharedPreferences 类:

public void getSharedPreferences() {
SharedPreferences prefs = getSharedPreferences("settings",
MODE_PRIVATE);

String jsonMovieModelList = prefs.getString("jsonMovieModelList", null);
Log.d("TAG", "Message" + jsonMovieModelList); // output is as expected

// if not filled in, no action necessary
if (jsonMovieModelList != null) {

listType = new TypeToken<ArrayList<MovieModel>>(){}.getType();
ArrayList<MovieModel> movieModelListSaved = gson.fromJson(jsonMovieModelList, listType);

MovieModel lastMovie = movieModelListSaved.get(movieModelListSaved.size() - 1);

showTitleSecond = (TextView)findViewById(R.id.show_title_2);
showTitleSecond.setText(lastMovie.getTitle());
}
}

gson代码基于:https://google.github.io/gson/apidocs/com/google/gson/Gson.html

需要明确的是:我确实理解 NullPointerException 是什么,但我不明白为什么在这种情况下会收到一个 NullPointerException 异常,因为我在执行之前检查了 String jsonMovieModelList 至少不为空。为什么 gson “丢失”引用?

我看这个问题:Android ArrayList of custom objects - Save to SharedPreferences - Serializable?我看到的唯一区别是我有一个 ArrayList

最佳答案

似乎您在此方法中使用变量gson之前尚未对其进行初始化。只需在第一次使用之前添加 Gson gson = new GsonBuilder().create(); ,或者在您调用的此方法中添加即可修复该问题。

关于java - Gson 和 SharedPreferences 导致 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39679420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com