我有这样的preference.xml
<MultiSelectListPreference
android:key="store_select"
android:title="@string/setting_store_title"
android:summary="@string/setting_store_summary"
android:dialogTitle="@string/setting_store_dialog_title"
android:entries="@array/store_names"
android:entryValues="@array/stores"
android:defaultValue="@array/stores"
/>
我的两个数组:
<string-array name="stores">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>
<string-array name="store_names">
<item>foodbasics</item>
<item>nofrills</item>
<item>metro</item>
<item>loblaws</item>
<item>sobeys</item>
</string-array>
我希望默认行为是所有选定的选项,但默认情况下当前没有选择任何选项。难道我做错了什么?
要默认选择(打开)所有MultiSelectListPreference
项目,请为首选项包含属性defaultsValue
,例如
android:defaultValue="@array/stores"
如果它不起作用,那么请确保你clear
应用程序数据,因为这只会在第一次运行应用程序时生效。
我想你忘了在你的PreferenceManager.setDefaultValues(this, R.xml.preference, false);
的onCreate()
方法中调用mainActivity
。
此方法将读取您的preference.xml
文件并设置其中定义的默认值。将readAgain
参数设置为false
意味着只有在过去从未调用此方法时才会设置默认值,因此您无需担心每次创建Activity时都会覆盖用户的设置。
我知道我迟到但可能是我的答案将来帮助别人......
组
android:defaultValue="@array/empty_array"
其中empty_array
是一个空数组。
如果您以编程方式添加MultiSelectListPreference
,那么您只需调用multiSelectListPreference.setDefaultValue()
:
EG
val preference = MultiSelectListPreference(context)
preference.setDefaultValue(setOf("US, "CN"))