2014-07-13 46 views
1

我想弄清楚如何使用getAll()方法從應用程序的SharedPreferences中設置每個字符串和鍵名,以便我可以使用這些值來命名填充按鈕並將這些按鈕分配給訪問sharedpreferences中正確的字符串在textview中顯示。從SharedPreference getAll()方法收集所有字符串?

問題是我不知道如何將這些值保存到一個字符串或字符串數​​組,因爲我從來沒有處理過地圖。

如果有人能夠幫助我將我的SharedPreferences鍵和字符串值存儲到一個字符串數組中,以便在我的片段中使用,那將是值得讚賞的。

這是我到目前爲止有:

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

回答

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

您可以在單獨的數組中使用類似的方法處理地圖鍵(而不是地圖值)。

+0

謝謝!好東西! – sanic

相關問題