我正在尝试让我的应用程序从XML数组中读取sharedpreferences默认值,但我遇到了问题。比方说,我有20个复选框,我在strings.xml中向字符串数组中插入了20个项目。现在我想要做的很简单,我希望我的共享偏好从这个数组中读取默认值。 Checkbox1将获得第一个项目名称,checkbox2将获得第二个项目名称,依此类推。下面的代码显示了我尝试做的事情。
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 :(得分: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);