ListPreferences未显示

时间:2013-08-07 01:40:53

标签: android

我有一个不显示选项的列表首选项 出现具有正确插槽数的框。但选项不在插槽中。
我试着改变主题 没有帮助。
我尝试添加和删除默认值属性 这没有用。
我尝试使用设置默认值方法。 这没有用。
我这本书做了这个,花了一天时间 有什么想法吗?

来自Options.class的

    public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.options);
            //PreferenceManager.setDefaultValues(getApplicationContext(),R.xml.options,
            //false); 
    }
来自Preference xml文件的

        <ListPreference
        android:title="@string/opt_cuisine_title"
        android:summary="@string/opt_cuisine_summary"
        android:defaultValue="Chinese"
        android:entries="@array/cuisine_preferences_array"
        android:entryValues="@array/cuisine_preferences"
        android:order="3"
        android:key="list" 
        />
来自resource / strings.xml文件的

<string-array name="cuisine_preferences" >
    <item name="Israeli">Israeli</item>
    <item name="Thai">Thai</item>
    <item>Italian</item>
    <item>French</item>
    <item>Other</item>
</string-array>
<integer-array name="cuisine_preferences_array">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    <item>5</item>
</integer-array>

来自清单:

 <activity
     android:name=".Options"
     android:label="@string/options_header"
 >
 </activity>

1 个答案:

答案 0 :(得分:0)

首先,ListPreference无法读取<integer-array>android:entriesandroid:entryValues都必须为<string-array>。但是,您可以将字符串解析为代码中的整数。

其次,android:entries是屏幕上显示的内容,android:entryValues是内部使用的值。

因此,

<ListPreference
android:title="@string/opt_cuisine_title"
android:summary="@string/opt_cuisine_summary"
android:defaultValue="1"
android:entries="@array/cuisine_preferences"
android:entryValues="@array/cuisine_preferences_array"
android:order="3"
android:key="list" 
/>


<string-array name="cuisine_preferences" >
    <item>Israeli</item>
    <item>Thai</item>
    <item>Italian</item>
    <item>French</item>
    <item>Other</item>
</string-array>
<string-array name="cuisine_preferences_array">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    <item>5</item>
</string-array>

编辑:android:defaultValue应该是android:entryValues之一。 <string-array>项不需要name属性。