我有一个"创建者按钮"在我的操作栏中,按下时,在我的主要活动中创建其他按钮。每次按下此按钮,都会在我的主活动中创建一个新按钮,创建一个按钮列表。
创建的按钮每个都与自定义对象相关联。按下时,按钮将其关联对象传递给方法并打开新片段。
问题:
我的问题是,如何保存用户创建的所有这些按钮/相关对象?
尝试解决方案:
我尝试将按钮/对象存储在hashmap中,编写包含hashmap的内部包装类,然后使用Gson转换为JSON,或者当我尝试从JSON转换回来时,Gson.fromJson(jsonString)返回null(我怀疑这是因为我试图存储按钮)。
以下是我尝试的解决方案的一些代码:
public void saveButtonsMap() {
Gson gson = new Gson();
MapWrapper wrapper = new MapWrapper();
wrapper.setMap(buttonsMap);
String serializedMap = gson.toJson(buttonsMap);
Editor editor = prefs.edit();
editor.putString(BUTTONS_MAP, serializedMap);
editor.commit();
}
public void restoreButtonsMap() {
String mapString = prefs.getString(BUTTONS_MAP, "");
Gson gson = new Gson();
if(!mapString.isEmpty()) {
MapWrapper wrapper = gson.fromJson(mapString, MapWrapper.class); // this is returning null
buttonsMap = wrapper.getMap();
}
else {
buttonsMap = new HashMap<Button, CustomObject>();
}
}
有什么想法吗?