Android 无法将对象转换为Json,因为有多个名为“mChangingConfigurations”的Json字段`
我正在使用Android 无法将对象转换为Json,因为有多个名为“mChangingConfigurations”的Json字段`,android,json,date,android-studio,gson,Android,Json,Date,Android Studio,Gson,我正在使用SharedReferences将我的Plant对象的ArrayList保存到内存中,但是当我调用 public static void savePlants(){ String json = gson.toJson(myPlantList); edit.putString("plants", json); edit.apply(); } 我得到这个错误java.lang.IllegalArgumentException:class android.conte
SharedReferences
将我的Plant
对象的ArrayList
保存到内存中,但是当我调用
public static void savePlants(){
String json = gson.toJson(myPlantList);
edit.putString("plants", json);
edit.apply();
}
我得到这个错误java.lang.IllegalArgumentException:class android.content.res.ColorStateList在这一行声明了多个名为mChangingConfigurations的JSON字段
String json = gson.toJson(myPlantList);
这是我的工厂
课程中的相关代码
public class Plant {
private String name;
private String date;
private Drawable image;
private String waterFrequency;
private Gson gson;
public Plant(String n, Drawable i, String wF){
this.name = n;
gson = new Gson();
Date time = Calendar.getInstance().getTime();
this.date = gson.toJson(time);
this.image = i;
this.waterFrequency = wF;
}
}
最后,这里是处理被点击的按钮和被添加到ArrayList的工厂的代码
您正在尝试将Gson实例转换为json。那可不太好。此外,不建议将Drawable转换为json。最好是:1)不要在Plant类中放置Gson变量。您可以为Gson使用单例!2) 在Plant类中,您使用对可绘制文件的引用,而不是可绘制文件本身(使用引用也会更好地消耗内存)
public void onClick(View v){
switch(v.getId()){
case R.id.savePlant:{
Log.d("SavePlant", "clicked");
MyApplication.myPlantList.add(new Plant(newPlantName.getText().toString(), plantCam.getDrawable(), newPlantWF.getText().toString()));
MyApplication.savePlants();
finish();
Log.d("SavePlant", "finished saving plant" + MyApplication.myPlantList.toString());
break;
}
}
}