从SharedPreference getAll()方法中收集所有字符串?

时间:2014-07-13 02:13:28

标签: android string map fragment sharedpreferences

我试图弄清楚如何使用getAll()方法从我的应用程序的SharedPreferences中设置每个字符串和键名,这样我就可以使用这些值来命名已填充的按钮并将这些按钮指定给访问sharedpreferences中的正确字符串以显示在textview中。

问题是我不知道如何将这些值保存到String或String Array中,因为我以前从未处理过地图。

如果有人可以帮我将我的SharedPreferences键和字符串值存储到String数组中,以便在我的片段中使用,这将是值得赞赏的。

这是我到目前为止所做的:

String[] arrayToStoreStrings;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    SharedPreferences sp = (SharedPreferences) MadlibsSaved.this.getActivity();
    Map<String,?> keys = sp.getAll();

    for(Map.Entry<String,?> entry : keys.entrySet()){
        Log.d("map values",entry.getKey() + ": " + 
                               entry.getValue().toString());            
}

更多努力更新但仍然出错:

BootstrapButton[] loadButtons;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    SharedPreferences sp = null;
    Map<String,?> keys = sp.MadlibsSaved.this.getActivity().getAll();

    for(Map.Entry<String,?> entry : keys.entrySet()){
        Log.d("map values",entry.getKey() + ": " + 
                               entry.getValue().toString());

        while(!(values[i].matches(null))){
            values[i] = entry.getValue().toString();
            i++;
        }
        while(!(key[i].matches(null))){
            key[i] = entry.getKey().toString();
            i++;
        }

 }

    loadButtons = new BootstrapButton[20];

    loadButtons[0] = new BootstrapButton(getActivity());
    loadButtons[0].setText(values[i]);

1 个答案:

答案 0 :(得分:0)

如果您只想要字符串值:

ArrayList<String> strings = new ArrayList<String>();
for(Map.Entry<String,?> entry : keys.entrySet()){
    if (entry.getValue() instanceof String) {
        strings.add((String) entry.getValue());
    }
}
arrayToStoreStrings = strings.toArray(new String[strings.size()]);

如果您想将每个值转换为字符串

ArrayList<String> strings = new ArrayList<String>();
for(Map.Entry<String,?> entry : keys.entrySet()){
    strings.add(entry.getValue().toString());
}
arrayToStoreStrings = strings.toArray(new String[strings.size()]);

您可以在单独的数组中对地图键(而不是地图值)执行类似的方法。