android 添加 MultiSelectListPreference
android adding MultiSelectListPreference
我正在尝试为我的设置屏幕实施 android 喷气背包首选项。
一切正常,当我点击 MultiSelectListPreference 时,它显示了条目列表,但我有几个问题,
- 为什么 entryValues 不能是整数数组? (字符串数组工作正常)
- 如何设置默认值?例如:我想将第二个和第三个条目设置为在开始时默认检查。
这是我的 pref.xml 文件的一部分
...
app:entries="@array/res_entries"
app:entryValues="@array/res_id_values"
app:defaultValue="@array/res_def_values" //this line is not working
...
如果我将 arrays.xml 文件中的 res_id_values
设置为 integer-array
,则应用程序会崩溃。
我的 settingsFragment class 扩展 PreferenceFragmentCompat 并覆盖 onCreatePreferences
并且在其中,我写了
setPreferencesFromResource(R.xml.pref.xml, rootkey)
编辑
我的 res_entries
数组:
<string-array name="res_entries">
<item>apple</item>
<item>Mango</item>
<item>Guava</item>
</string-array>
我的 res_id_values
数组:
<string-array name="res_id_values">
<item>1</item>
<item>2</item>
<item>12</item>
</string-array>
我的 res_def_values
数组:
<string-array name="res_def_values">
<item>true</item>
<item>false</item>
<item>true</item>
</string-array>
所以最后,我解决了它。
感谢@CommonsWare .
第一个问题的答案是,我们不能使用整型数组。使用字符串数组并在其中存储整数值。稍后当你得到它时,使用 Integer.parseInt().
现在进入第二个问题,要存储默认值(假设您希望默认选中第二项和第三项),请在 res_def_values 中使用 res_id_values。 不要像我一样使用 true/false 或 0/1。
例如:如果在上面的问题中,如果我希望默认选中 apple 和 guava,那么我的 res_def_values 将如下所示:
<string-array name="res_def_values">
<item>1</item>
<item>12</item>
</string-array>
我正在尝试为我的设置屏幕实施 android 喷气背包首选项。 一切正常,当我点击 MultiSelectListPreference 时,它显示了条目列表,但我有几个问题,
- 为什么 entryValues 不能是整数数组? (字符串数组工作正常)
- 如何设置默认值?例如:我想将第二个和第三个条目设置为在开始时默认检查。
这是我的 pref.xml 文件的一部分
...
app:entries="@array/res_entries"
app:entryValues="@array/res_id_values"
app:defaultValue="@array/res_def_values" //this line is not working
...
如果我将 arrays.xml 文件中的 res_id_values
设置为 integer-array
,则应用程序会崩溃。
我的 settingsFragment class 扩展 PreferenceFragmentCompat 并覆盖 onCreatePreferences
并且在其中,我写了
setPreferencesFromResource(R.xml.pref.xml, rootkey)
编辑
我的 res_entries
数组:
<string-array name="res_entries">
<item>apple</item>
<item>Mango</item>
<item>Guava</item>
</string-array>
我的 res_id_values
数组:
<string-array name="res_id_values">
<item>1</item>
<item>2</item>
<item>12</item>
</string-array>
我的 res_def_values
数组:
<string-array name="res_def_values">
<item>true</item>
<item>false</item>
<item>true</item>
</string-array>
所以最后,我解决了它。 感谢@CommonsWare .
第一个问题的答案是,我们不能使用整型数组。使用字符串数组并在其中存储整数值。稍后当你得到它时,使用 Integer.parseInt().
现在进入第二个问题,要存储默认值(假设您希望默认选中第二项和第三项),请在 res_def_values 中使用 res_id_values。 不要像我一样使用 true/false 或 0/1。
例如:如果在上面的问题中,如果我希望默认选中 apple 和 guava,那么我的 res_def_values 将如下所示:
<string-array name="res_def_values">
<item>1</item>
<item>12</item>
</string-array>