无法在自定义对象的ArrayList上使用Gson保存SharedPreferences

时间:2017-07-22 02:58:21

标签: java android arraylist gson sharedpreferences

我正在尝试顶部答案中的解决方案:Android ArrayList of custom objects - Save to SharedPreferences - Serializable?

我正在尝试将自定义对象的ArrayList保存到SharedPreferences。

SharedPreferences appSharedPrefs = PreferenceManager.getDefaultSharedPreferences(baseApplication);
SharedPreferences.Editor prefsEditor = appSharedPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(masterPinList);
prefsEditor.putString("masterPinList", json);
prefsEditor.apply();

masterPinList是自定义对象的数组列表(Pin)。

错误是:

java.lang.SecurityException: Can not make a java.lang.reflect.Method constructor accessible

此行发生错误:

String json = gson.toJson(masterPinList);

有什么问题?

2 个答案:

答案 0 :(得分:0)

您可以尝试向类中添加一个空构造函数,因为这将用于设置值。

public className() {

}

答案 1 :(得分:0)

您的对象是否可序列化?这可能是问题所在。这是一个示例类

public class PlanDateObject {

@SerializedName("DateList")
private List<String> dateList;
@SerializedName("PlanList")
private List<Plan> planList;

public List<String> getDateList() {
    return dateList;
}

public void setDateList(List<String> dateList) {
    this.dateList = dateList;
}

public List<Plan> getPlanList() {
    return planList;
}

public void setPlanList(List<Plan> planList) {
    this.planList = planList;
}

}