为啥列表首选项中的条目没有显示在应用程序中?
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
是显示给用户的值。在您的情况下,它与您的数组具有相同的项目相同。
例如,数组中的条目将是 以上是关于为啥列表首选项中的条目没有显示在应用程序中?的主要内容,如果未能解决你的问题,请参考以下文章