为啥列表首选项中的条目没有显示在应用程序中?

Posted

技术标签:

【中文标题】为啥列表首选项中的条目没有显示在应用程序中?【英文标题】:Why do the entries on the list preference not show up in the app?为什么列表首选项中的条目没有显示在应用程序中? 【发布时间】:2013-03-24 04:49:48 【问题描述】:

在设置部分,有一个颜色列表首选项(如下面的代码所示),但我似乎找不到值不显示的原因。我检查了互联网,但我似乎无法理解 android:entries 和 android:entryValues 之间的区别。这可能是我的代码中的问题吗?任何帮助表示赞赏。提前致谢。

下面的数组

<string-array name="preferencebackground">
<item name="Red"/>
<item name="Green"/>
<item name="Blue"/>
<item name="Orange"/>
</string-array>
<string name="preferencebackground">Background Colour Preferences</string>
 <string-array name="preferencebackgroundvalues">
<item name="Red"/>
<item name="Green"/>
<item name="Blue"/>
<item name="Orange"/>
</string-array>

Pref_general.xml

    <ListPreference
    android:defaultValue="-1"
    android:entries="@array/preferencebackground"
    android:entryValues="@array/preferencebackgroundvalues"
    android:key="example_list1"
    android:negativeButtonText="@null"
    android:positiveButtonText="@null"
    android:title="@string/preferencebackground" />

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,我的错误是在arrays.xml上,

这是我之前的代码..

 <string-array name="list">
        <item name="option 1">Option 1 </item>
        <item name="option 2">Option 2 </item>
        <item name="option 3">Option 3 </item>
        <item name="option 4">Option 4 </item>
    </string-array>

    <string-array name="lvalues">
        <item name="1">1</item>
        <item name="2">2</item>
        <item name="3">3</item>
        <item name="4">4</item>
    </string-array>

这是我修改后的代码。

 <string-array name="optionlist">
        <item name="option 1">Option 1 </item>
        <item name="option 2">Option 2 </item>
        <item name="option 3">Option 3 </item>
        <item name="option 4">Option 4 </item>
    </string-array>

    <string-array name="optionlistValues">
        <item name="1">1</item>
        <item name="2">2</item>
        <item name="3">3</item>
        <item name="4">4</item>
    </string-array>

希望这会有所帮助。

【讨论】:

请问有什么区别?【参考方案2】:

你的数组的定义应该是这样的:

<string-array name="entries">
    <item>Red</item>
    <item>Blue</item>
    <item>Green</item>
    <item>Black</item>
</string-array>

<string-array name="values">
    <item>#FF0000</item>
    <item>#0000FF</item>
    <item>#00FF00</item>
    <item>#000000</item>
</string-array>

此外,我会从首选项中删除这些行...

android:negativeButtonText="@null"
android:positiveButtonText="@null"

...而且,更重要的是:设置一个作为列表一部分的默认值。

<ListPreference
    android:defaultValue="Red"
    android:entries="@array/preferencebackground"
    android:entryValues="@array/preferencebackgroundvalues"
    android:key="example_list1"
    android:title="@string/preferencebackground" />

假设您将数组存储在名为 arrays.xml 的文件中,并且首选项文件格式正确,那么它应该可以正常工作。

附言当然最好使用字符串引用而不是硬编码的Red 和颜色引用而不是#FF0000 等。

【讨论】:

谢谢,但 android:entries= 和 android:entryValues= 有什么区别,你会在这些数组中放什么? 这是因为列表中的按钮显示,但不显示颜色名称。 values 是首选项的实际值,而entryValues 是显示给用户的值。在您的情况下,它与您的数组具有相同的项目相同。 例如,数组中的条目将是 而条目值将是 ​​ 跨度> 你知道吗,我刚刚再次检查了我的列表首选项,我犯了一个错误:你的数组列表没有以正确的方式定义。请参阅上面的编辑。

以上是关于为啥列表首选项中的条目没有显示在应用程序中?的主要内容,如果未能解决你的问题,请参考以下文章

如何保存和获取存储在共享首选项中的包名称?

为啥cdrx4显示不了缩略图

限制列表控件 MFC 中的条目数

如何根据偏好更改显示的按钮[关闭]

为啥我的 iOS 应用没有显示在其他应用的“打开方式”对话框中?

JQuery 测验应用程序 - 突出显示无序列表条目和调用函数