我想让我的应用程序从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());
}
做ü解决了这个问题? – KOTIOS
不幸的是,现在还没有,我觉得我更接近解决方案,但我的应用程序仍然不会读取数组。正如我已经告诉LJoosse(回答我的问题的人),默认值现在显示为“[]”。 – Guy