列表preferences不显示

列表preferences不显示

本文介绍了列表preferences不显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个列表preference不显示的选择。结果
似乎是正确数量的插槽一盒。但选项不是在插槽中。结果
我试图改变的主题。结果
没有帮助。结果
我尝试添加和删除默认值属性。结果
这并没有帮助。结果
我尝试使用一套默认值的方法。
这并没有帮助。结果
我不希望这本书,一天花了就可以了。结果
任何想法?

从Options.class

 公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    加preferencesFromResource(R.xml.options);
            //$p$pferenceManager.setDefaultValues​​(getApplicationContext(),R.xml.options,
            //假);
    }

从preference xml文件:

 <名单preference
        机器人:标题=@字符串/ opt_cuisine_title
        机器人:总结=@字符串/ opt_cuisine_summary
        机器人:设置defaultValue =中国
        机器人:项=@阵列/ cuisine_ preferences_array
        机器人:entryValues​​ =@阵列/ cuisine_ preferences
        安卓:为了=3
        机器人:键=清单
        />

从资源/ strings.xml档案:

 <字符串数组名=cuisine_ preferences>
    <项目名称=以色列>以色列和LT; /项目>
    <项目名称=泰>泰国< /项目>
    <项目>意大利语< /项目>
    <项目>法语< /项目>
    <项目>其他< /项目>
< /字符串数组>
<整型数组名=cuisine_ preferences_array>
    <项目> 1 LT; /项目>
    <项目> 2'; /项目>
    <项目>第3版; /项目>
    <项目> 4℃; /项目>
    <项目> 5℃/项目>
< /整数数组>

从清单:

 <活动
     机器人:选项NAME =
     机器人:标签=@字符串/ options_header
 >
 < /活性GT;


解决方案

首先,目录preference 不能读<整型数组&GT ; 。无论机器人:项的android:entryValues​​ 必须<字符串数组> 。可以解析到的字符串中的code整数,虽然。

二,机器人:项是显示在屏幕上,和的android:entryValues​​ 是值在内部使用。

因此​​,

 <名单preference
机器人:标题=@字符串/ opt_cuisine_title
机器人:总结=@字符串/ opt_cuisine_summary
机器人:设置defaultValue =1
机器人:项=@阵列/ cuisine_ preferences
机器人:entryValues​​ =@阵列/ cuisine_ preferences_array
安卓:为了=3
机器人:键=清单
/>
<字符串数组名=cuisine_ preferences>
    <项目>以色列和LT; /项目>
    <项目>泰国< /项目>
    <项目>意大利语< /项目>
    <项目>法语< /项目>
    <项目>其他< /项目>
< /字符串数组>
<字符串数组名=cuisine_ preferences_array>
    <项目> 1 LT; /项目>
    <项目> 2'; /项目>
    <项目>第3版; /项目>
    <项目> 4℃; /项目>
    <项目> 5℃/项目>
< /字符串数组>

编辑:的android:设置defaultValue 的一个机器人:entryValues​​ <字符串数组方式> 项目不需要名称属性

I have a listpreference that does not display the choices.
A box with the correct number of slots appears. but the options are not in the slots.
I tried changing the theme.
Did not help.
I tried adding and removing the default value attribute.
That did not help.
I tried using the set Default Value method.That did not help.
I did this by the book and spent over a day on it.
Any ideas?

from the Options.class

    public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.options);
            //PreferenceManager.setDefaultValues(getApplicationContext(),R.xml.options,
            //false);
    }

from the Preference xml file:

        <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"
        />

from the resource/strings.xml file:

<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>

from the manifest:

 <activity
     android:name=".Options"
     android:label="@string/options_header"
 >
 </activity>
解决方案

First, ListPreference cannot read <integer-array>. Both android:entries and android:entryValues must be <string-array>. You can parse the strings into integers in the code, though.

Second, android:entries is what is shown on the screen, and android:entryValues is the value that is used internally.

Therefore,

<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>

EDIT: android:defaultValue should be one of android:entryValues. <string-array> items do not need name attribute.

这篇关于列表preferences不显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 03:52