5

PreferenceActivity の xml ファイル (/res/xml/setting.xml) があります。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory android:title="Main Settings">
            <ListPreference
                android:title="Background Image"
                android:summary="Set the background image"
                android:key="key_background"
                android:entries="@array/background"
                android:entryValues="@array/background_values" 
                android:defaultValue="winter.png" /> 
        </PreferenceCategory>
</PreferenceScreen>

次に、別の xml ファイル "/res/values/string.xml" があります。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="background">
        <item>Winter</item>
        <item>Desert</item>
    </string-array>

    <string-array name="background_values">
        <item>winter.png</item>
        <item>desert.png</item>
    </string-array>

</resources>

setting.xml の ListPreference を見て、android:defaultValueで設定したいwinter.png。しかし、xmlにハードコードされた/定数値を設定したくないので、「@array/background_values/0」、「 」などのさまざまな値で試しまし@array/background_values[0]たが、すべて失敗しました。

したがって、質問は次のとおりです。

  1. 他のxmlで文字列配列リソースのアイテムにアクセスするための正しい構文は何ですか?
  2. が機能しているかどうかを確認する方法android:defaultValueは?
  3. @array構文に関するドキュメントはありますか? 何も見つかりません。
4

3 に答える 3

1
  1. Android 開発者は、XML でリソースを参照する方法を提供してstring-arrayいません。その項目については言及していません。
  2. アプリのデータを消去し、アプリを再インストールして開き、設定画面にdefaultValue移動すると、共有設定ファイルに移動します。defaultValueいずれかの項目に一致する場合、それが選択されます。

ところで、ハードコーディングを避けるために、文字列配列の項目を文字列を参照するように変更できます。

于 2012-04-18T09:38:37.017 に答える
0

配列から必要な値のインデックスを使用しますandroid:defaultValue = "0"

上記のコードは、文字列配列値内で数値を使用しているためにのみ機能しましたが、インデックスが原因ではありません。

于 2012-04-18T08:14:16.870 に答える