gpt4 book ai didi

java - 无法为接口(interface) android.app.IAlarmManager 调用无参数构造函数

转载 作者:行者123 更新时间:2023-11-29 22:42:05 33 4
gpt4 key购买 nike

我浏览了很多文章,但没有一篇回答了我的问题。我正在尝试从已存储的 SharedPreferences 中获取自定义类类型 AnAlarmArrayList。我已将 ArrayList alarms 作为 Json String 存储在 SharedPreferences 中,现在我正在尝试获取此 ArrayList 通过使用以下代码:

            String alarms_temp_string=preferences.getString("alarms",null);
if(alarms_temp_string==null){
alarms =new ArrayList<AnAlarm>();
}

Gson gson = new Gson();
Type type=new TypeToken<ArrayList<AnAlarm>> (){}.getType();
ArrayList<AnAlarm> alarms=gson.fromJson(alarms_temp_string,type);
adapter=new RecyclerViewAdapter(alarms);

但是我得到以下异常:

   java.lang.RuntimeException: Unable to invoke no-args constructor for interface android.app.IAlarmManager. Registering an InstanceCreator with Gson for this type may fix this problem.

在这行代码中:

ArrayList<AnAlarm> alarms=gson.fromJson(alarms_temp_string,type);

当我评论上面的行时,剩下的程序运行顺利。

以下是我的自定义类AnAlarm代码:

public class AnAlarm {

private Calendar calendar;

public AnAlarm(){}

public AnAlarm(Calendar calendar) {

this.calendar = calendar;

}

public Calendar getCalendar() {
return calendar;
}

public void setCalendar(Calendar calendar) {
this.calendar = calendar;
}


}

在这个类中还有一个无参数构造函数以及所有getterssetters。为什么我会遇到这个问题?提前致谢!

最佳答案

如果您在自定义类中声明了第三个类的实例,则不能简单地使用 Gson

在您的情况下,您的类 AnAlarm 中有 Calendar 的实例。删除它并重试!

如果您无论如何都被迫使用它,请为您的类(class)使用实例创建器。见这篇文章: https://futurestud.io/tutorials/gson-advanced-custom-instance-creator

关于java - 无法为接口(interface) android.app.IAlarmManager 调用无参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58951553/

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