收集来自SharedPreference GETALL()方法的所有字符串?(Gather all

2019-10-20 11:24发布

我想弄清楚如何设置使用的GETALL()方法,我的应用程序的SharedPreferences每个字符串和键名,所以我可以使用这些值来名填充按钮和分配这些按钮将访问在sharedpreferences正确的琴弦,以显示一个TextView。

问题是我不知道如何,因为我没有以前处理映射到这些值保存到一个字符串或字符串数​​组。

如果有人可以帮助我,我的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]);

Answer 1:

如果你只想要字符串值:

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()]);

可以执行对地图键的类似方法(相对于映射值)在一个单独的阵列。



文章来源: Gather all Strings from SharedPreference getAll() Method?