我有一个用于PreferenceActivity的xml文件(/res/xml/setting.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:defaultValue
设置为winter.png
。但我也不想在xml中设置硬编码/常量值,所以我尝试使用各种值,例如“@array/background_values/0
”,“@array/background_values[0]
”等...但都失败了
所以,问题是:
android:defaultValue
是否有效?@array
语法的文档?我找不到任何。答案 0 :(得分:1)
string-array
进行资源引用,也不提供其项目。 defaultValue
将转到您的共享优先文件。如果defaultValue
与其中一个项目匹配,则会选中该项目。顺便说一句,您可以更改字符串数组中的项目以引用字符串以避免硬编码。
答案 1 :(得分:0)
使用数组android所需的值的索引:defaultValue =“0”
上面的代码只是因为我在我的字符串数组值中使用数字,这不是因为索引。
答案 2 :(得分:0)
1-为数组定义一个单独的文件(res / values / 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-在Preference 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>