我正在尝试为我的设置屏幕实现android jetpack首选项。 一切正常,当我单击MultiSelectListPreference时,它显示了条目列表,但是我有几个问题,
这是我的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类扩展了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>
答案 0 :(得分:1)
所以最后,我解决了。 感谢@CommonsWare。
第一个问题的答案是,我们不能使用整数数组。使用字符串数组并在其中存储整数值。稍后获得它时,请使用Integer.parseInt()。
现在是第二个问题,要存储默认值(假设您要默认检查第二和第三项),请在res_def_values中使用res_id_values。 请勿像我一样使用true / false或0/1 。
例如:如果在上述问题中,如果我希望默认检查苹果和番石榴,那么我的res_def_values将如下所示:
<string-array name="res_def_values">
<item>1</item>
<item>12</item>
</string-array>