我有这样的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>
我希望默认行为是所有选定的选项,但默认情况下当前没有选择任何选项。我做错了吗?
答案 0 :(得分:15)
默认情况下,要选中(开启)所有MultiSelectListPreference
个项目,然后为首选项添加属性defaultsValue
,例如
android:defaultValue="@array/stores"
如果它不起作用,请确保您clear
应用程序数据,因为这只会在第一次运行应用程序时生效。
答案 1 :(得分:5)
我想你忘记了致电PreferenceManager.setDefaultValues(this, R.xml.preference, false);
在onCreate()
。{/ p>的mainActivity
方法中
此方法将读取您的preference.xml
文件并设置其中定义的默认值。将readAgain
参数设置为false
意味着只有在过去从未调用此方法时才会设置默认值,因此每次Activity都不需要担心覆盖用户的设置创建
答案 2 :(得分:2)
我知道我迟到但未来可能是我的回答帮助别人......
设置
android:defaultValue="@array/empty_array"
其中empty_array
是一个空数组。
答案 3 :(得分:0)
如果您以编程方式添加MultiSelectListPreference
,则只需调用multiSelectListPreference.setDefaultValue()
:
例如
val preference = MultiSelectListPreference(context)
preference.setDefaultValue(setOf("US, "CN"))