在android中保存动态创建的按钮

时间:2014-07-18 18:04:05

标签: java android

我有一个"创建者按钮"在我的操作栏中,按下时,在我的主要活动中创建其他按钮。每次按下此按钮,都会在我的主活动中创建一个新按钮,创建一个按钮列表。

创建的按钮每个都与自定义对象相关联。按下时,按钮将其关联对象传递给方法并打开新片段。

问题:

我的问题是,如何保存用户创建的所有这些按钮/相关对象?

尝试解决方案:

我尝试将按钮/对象存储在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>();
    }
}

有什么想法吗?

0 个答案:

没有答案