0

XML ファイルで作成した文字列配列から sharedpreferences のデフォルト値を読み取ろうとしています。

Sharedpreferences GET 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);
    return itemQuantitySP.getString(key, spBifrost.toString());
}

文字列配列 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 を使用するたびに、デフォルト値が [Ljava.lang.String;@435ec530] として自動的に読み取られ、それがどこから取得され、どのように修正されるのかわかりません。24個のチェックボックスがあり、チェックボックス1に最初のアイテム、チェックボックス2に2番目のアイテムなどを使用したい.

getItemQuantity の呼び出し:

cb4.setText(getItemQuantity("cb4quantity"));
String[] spBifrost = getItemQuantity("cb4quantity").split(";");
4

2 に答える 2

0

非常に簡単です。共有設定に配列を配置することはできません。またitemQuantitySP.getString(key, spBifrost.toString());、文字列の配列ではなく、文字列を返す必要があります。したがって、その配列からデフォルト値を返す必要がある場合は、次のようにします。

itemQuantitySP.getString(key, spBifrost[itemPositionThatYouWantToUseAsDefault]);
于 2013-07-02T21:23:08.670 に答える