android添加了MultiSelectListPreference
我正在尝试为我的设置屏幕实现android jetpack首选项。 一切正常,当我点击MultiSelectListPreference时,它会显示条目列表,但我有几个问题android添加了MultiSelectListPreference,android,android-preferences,android-jetpack,Android,Android Preferences,Android Jetpack,我正在尝试为我的设置屏幕实现android jetpack首选项。 一切正常,当我点击MultiSelectListPreference时,它会显示条目列表,但我有几个问题 为什么entryValues不能是整数数组?(字符串数组工作正常) 如何设置默认值?例如:我想在开始时设置默认选中的第二个和第三个条目 这是我的pref.xml文件的一部分 ... app:entries="@array/res_entries" app:entryValues="@array/res_id_values"
...
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\u id\u值设置为整数数组
,则应用程序将崩溃
我的settingsFragment类扩展了PreferenceFragmentCompat并重写了onCreatePreferences,我在其中编写了
setPreferencesFromResource(R.xml.pref.xml, rootkey)
编辑
我的res\u条目
数组:
<string-array name="res_entries">
<item>apple</item>
<item>Mango</item>
<item>Guava</item>
</string-array>
<string-array name="res_id_values">
<item>1</item>
<item>2</item>
<item>12</item>
</string-array>
<string-array name="res_def_values">
<item>true</item>
<item>false</item>
<item>true</item>
</string-array>
我的res_def_值
数组:
<string-array name="res_entries">
<item>apple</item>
<item>Mango</item>
<item>Guava</item>
</string-array>
<string-array name="res_id_values">
<item>1</item>
<item>2</item>
<item>12</item>
</string-array>
<string-array name="res_def_values">
<item>true</item>
<item>false</item>
<item>true</item>
</string-array>
真的
假的
真的
最后,我解决了这个问题。
这一切都要感谢@commonware
我的第一个问题的答案是,我们不能使用整数数组。使用字符串数组并在其中存储整数值。稍后获得它时,请使用Integer.parseInt()
现在进入第二个问题,要存储默认值(假设您希望默认选中第二项和第三项),请在res_def_值中使用res_id_值不要像我一样使用真/假或0/1
例如:如果在上述问题中,如果我希望默认选中苹果和番石榴,那么我的res_def_值将如下所示:
<string-array name="res_def_values">
<item>1</item>
<item>12</item>
</string-array>
1.
12
“为什么entryValues不能是整数数组?”--因为数组资源是键入的,它需要的是字符串[]
,而不是int[]
或整数[]
。另外,保存的值是Set
,而不是Set
@commonware,以及如何通过xml设置默认值?如果我阅读正确,请使用android:defaultValue
,并将其指向另一个
资源。我已经尝试过这样做,但不起作用。我这样做了``true false``这些字符串是否与res\u id\u值
数组中的字符串匹配?