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;
        }
    }
}