2013-06-28 105 views
0

我想讓我的應用程序從XML數組中讀取sharedpreferences默認值,但是我遇到了一個問題。比方說,我有20個複選框,我在strings.xml中將20個項目插入到字符串數組中。現在我想要做的事很簡單,我希望我的sharedpreferences從這個數組讀取默認值。 Checkbox1將獲得第一個項目名稱,checkbox2將獲得第二個項目名稱等。下面的代碼顯示了我試圖做的事情。從XML數組讀取sharedpreferences默認值

XML數組:

<string-array name="spBifrost"> 
    <item>Elaborate Totem (250)</item> 
    <item>Pile of Crystalline Dust (250)</item> 
    <item>Powerful Venom Sac (250)</item> 
    <item>Vial of Powerful Blood (250)</item> 
    <item>Ancient Bone (250)</item> 
    <item>Armored Scale (250)</item> 
    <item>Vicious Claw (250)</item> 
    <item>Vicious Fang (250)</item> 
    <item>Glob of Ectoplasm (77)</item> 
    <item>Glob of Ectoplasm (77)</item> 
    <item>Mystic Coin (77)</item> 
    <item>Obsidian Shard (77)</item> 
    <item>Philosophers Stone (462)</item> 
    <item>Badge of Honor (500)</item> 
    <item>Obsidian Shard (250)</item> 
    <item>Shard of Zhaitan (500)</item> 
    <item>Opal Orb (100)</item> 
    <item>Pile of Crystalline Dust (250)</item> 
    <item>Unidentified Dye (250)</item> 
    <item>Pile of Crystalline Dust (250)</item> 
    <item>Pile of Incandescent Dust (250)</item> 
    <item>Pile of Luminous Dust (250)</item> 
    <item>Pile of Radiant Dust (250)</item> 
    <item>Icy Runestone (100)</item> 
</string-array> 

Sharedpreferences在java中獲取代碼:

private String getItemQuantity(String key){ 
    SharedPreferences itemQuantitySP = getApplicationContext().getSharedPreferences("bifrostPrefs", android.content.Context.MODE_PRIVATE); 
    Resources spRes = getResources(); 
    TypedArray itemNames = spRes.obtainTypedArray(R.array.spBifrost); 
    String itemSp = itemNames.toString(); 
    return itemQuantitySP.getString(key, itemSp); 
} 

現在,當我真正使用此代碼,它不工作,我怎麼想的。例如,不是將checkbox1重命名爲「Elaborate Totem(250)」,而是將它重命名爲一堆我不明白的隨機數。有人能告訴我我做錯了什麼嗎?我是一個完整的初學者(開始學習一個月前開發的java/android),所以我有很大的機會去完全錯誤的,這就是爲什麼我要求你的幫助。

現在Java代碼:

private String getItemQuantity(String key){ 
    SharedPreferences itemQuantitySP = getApplicationContext().getSharedPreferences("bifrostPrefs", android.content.Context.MODE_PRIVATE); 
    Resources res = getResources(); 
    String[] spBifrost = res.getStringArray(R.array.spBifrost); 
    ArrayList<String> spBifrostArray = new ArrayList<String>(); 
    return itemQuantitySP.getString(key, spBifrostArray.toString()); 
} 
+0

做ü解決了這個問題? – KOTIOS

+0

不幸的是,現在還沒有,我覺得我更接近解決方案,但我的應用程序仍然不會讀取數組。正如我已經告訴LJoosse(回答我的問題的人),默認值現在顯示爲「[]」。 – Guy

回答

1

請提問前搜索文檔!

正如你可以here看,你應該檢索與

Resources res = getResources(); 
String[] spBifrost = res.getStringArray(R.array.spBifrost); 

當然的字符串數組,使之爲自己更容易一點,讓一個ArrayList:

Resources res = getResources(); 
String[] spBifrost = res.getStringArray(R.array.spBifrost); 
ArrayList spBifrost = new ArrayList<String>(spBifrost); 
+0

非常感謝您的回答,我現在這樣做了(檢查我的原始文章中的編輯),但它仍然無法正常工作。默認值現在顯示[]。任何想法可能是錯的? – Guy