无法为接口android.app.IAlarmManager调用任何参数构造函数



我读了很多文章,但都没有回答我的问题。我正在尝试从已存储的SharedPreferences中获取自定义类类型AnAlarmArrayList。我已经将ArrayListalarms作为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;
}

}

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

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

在您的例子中,您的类AnAlarm中有Calendar的实例。请将其删除,然后重试!

如果您被迫使用它,请为您的类使用实例创建者。请参阅本文:https://futurestud.io/tutorials/gson-advanced-custom-instance-creator

相关内容

最新更新