2012-04-18 9 views
5

私はPreferenceActivityのためのxmlファイル(/res/xml/setting.xml)を持っている:<string-array>リソースから<item>にアクセスするにはアンドロイド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:defaultValuewinter.pngと設定します。しかし、私はまた、ハードコード/定数の値をxmlに設定したくないので、 "@array/background_values/0"、 "@array/background_values[0]"などのさまざまな値を試しましたが、すべて失敗しました。

ので、ご質問は以下のとおりです。

  1. 他のXMLに文字列の配列リソースの項目をaccesingの正しい構文は何ですか?
  2. android:defaultValueが動作しているかどうかを確認するにはどうすればよいですか?
  3. @arrayの構文に関する資料はありますか?私は何も見つかりませんでした。

答えて

0

あなたは、配列のアンドロイドから必要な値のインデックスを使用してください:はdefaultValue =「0」

私は私の文字列配列値内の数値を使用していますので、上記のコードだけ働いていた、それがあるためではありませんインデックスの。

+0

こんにちは、あなたはアンドロイド:defaultValueが動作しているかどうかをテストする方法を知っていますか? – null

+0

環境設定をデフォルトにリセットするには、アプリケーションの「データを消去する」ことができます。あなたは電話の設定でそれを行うことができます。 (また、upvoteを忘れないでください、そして/またはそれがあなたに役立つなら答えとしてそれをマークしてください) – julian

+0

デフォルト以外の別の値を選んでみてください。次に、設定に移動し、アプリのデータを消去します。次にアプリケーションを開くときに、デフォルト値が表示されている必要があります。 – julian

1
  1. Android Developersは、リソースの参照がXMLのstring-arrayへの参照方法ではなく、そのアイテムをmetionしません。
  2. あなたのアプリのデータを消去し、再インストールしてアプリを開いて、設定画面に移動してから、defaultValueがあなたの共有されたpreferecesファイルに移動します。 defaultValueがいずれかの項目と一致する場合は、その項目が選択されます。

ところで、ハードコードを避けるためにstring-arrayの項目をstringを参照するように変更することができます。

+1

**文字列への参照はハードコードされた値ではありません。なぜそれを使用しないのですか? –

+1

background_values 内のwinter.jpg(これはid = default_backgroundとします)とwinter.jpgのリソースはリソースを作成して@ string/default_backgroundに変更できます。直感的ではないことが少し見つかりましたが、winter.jpgをxmlに一度入力する唯一の方法だと思います。 – null

0

1-アレイの別個のファイル(RES /値/ arrays.xml)を定義

arrays.xml

<?xml version="1.0" encoding="utf-8"? 
<resources> 
<string-array name="settings_order_by_labels"> 
    <item>label1</item> 
    <item>label2</item> 
</string-array> 

<string-array name="settings_order_by_values"> 
    <item>value1</item> 
    <item>value2</item> 
</string-array> 
</resources> 

2-優先XMLファイルの使用このアレイ:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:title="@string/settings_title"> 

<ListPreference 
    android:defaultValue="value1" 
    android:entries="@array/settings_order_by_labels" 
    android:entryValues="@array/settings_order_by_values" 
    android:key="order_by" 
    android:title="Order By" /> 
</PreferenceScreen> 
関連する問題