已关闭。此问题需要更多的focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。
9个月前关闭。
Improve this question
我想在SharedPreferences中保存一个按钮列表,但是它不起作用。出现的错误消息是“java.lang.IllegalArgumentException:类声明了多个名为mState的JSON字段”
public boolean writeToSharedPreferences(Context context, ArrayList<Button> arrayList) {
String file = "list";
SharedPreferences mPrefs = context.getSharedPreferences(file, Context.MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(arrayList);
prefsEditor.putString("list", json);
prefsEditor.commit();
return true;
}
public ArrayList<Button> readFromSharedPreferences(Context context) {
String file = "list";
SharedPreferences mPrefs = context.getSharedPreferences(file, Context.MODE_PRIVATE);
Gson gson = new Gson();
String json = mPrefs.getString("list", "");
Type type = new TypeToken<List<Button>>(){}.getType();
ArrayList<Button> arrayList= gson.fromJson(json, type);
return arrayList;
}
有人能帮我吗?
1条答案
按热度按时间e5nszbig1#
你不能这样
按钮是一种交互式UI元素。它们具有与之关联的行为和代码(单击时发生的情况)。您不能将按钮存储到共享首选项,就像您不能在打印机上打印按钮一样:你得到的将不是一个按钮,只是一个图像的一个不能按下。
考虑一下你 * 实际上 * 想要保存的东西:它是关于系统状态的一些信息吗?2一些文本吗?3将其保存到共享的首选项中,然后当你读取它时,从这些数据中重建你的UI。