无法为接口 android.app.IAlarmManager 调用无参数构造函数
Unable to invoke no-args constructor for interface android.app.IAlarmManager
我浏览了很多文章,但其中 none 回答了我的问题。
我正在尝试从已存储的 SharedPreferences
中获取自定义 class 类型 AnAlarm
的 ArrayList
。我已将 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);
当我注释掉上面这行的时候,剩下的程序就顺利运行了。
以下是我的自定义classAnAlarm
代码:
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;
}
}
在这个 class 中还有一个 无参数构造函数 以及所有 getters
和 setters
都存在。为什么我会遇到这个问题?提前致谢!
如果您在自定义 class 中声明了第三个 class 的实例,则不能简单地使用 Gson
。
在你的情况下,你的 class AnAlarm
中有 Calendar
的实例。删除它并重试!
如果您无论如何都被迫使用它,请为您的 class 使用 实例创建者 。见这篇文章:
https://futurestud.io/tutorials/gson-advanced-custom-instance-creator
我浏览了很多文章,但其中 none 回答了我的问题。
我正在尝试从已存储的 SharedPreferences
中获取自定义 class 类型 AnAlarm
的 ArrayList
。我已将 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);
当我注释掉上面这行的时候,剩下的程序就顺利运行了。
以下是我的自定义classAnAlarm
代码:
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;
}
}
在这个 class 中还有一个 无参数构造函数 以及所有 getters
和 setters
都存在。为什么我会遇到这个问题?提前致谢!
如果您在自定义 class 中声明了第三个 class 的实例,则不能简单地使用 Gson
。
在你的情况下,你的 class AnAlarm
中有 Calendar
的实例。删除它并重试!
如果您无论如何都被迫使用它,请为您的 class 使用 实例创建者 。见这篇文章: https://futurestud.io/tutorials/gson-advanced-custom-instance-creator