通常每個(gè)APP都有一個(gè)設(shè)置界面,以前寫(xiě)設(shè)置界面,又要寫(xiě)布局,而且每個(gè)設(shè)置的內(nèi)容我們還要用sharePreference自己寫(xiě)一套來(lái)管理保存。確實(shí)有點(diǎn)麻煩,現(xiàn)在好了,有一個(gè)叫做PreferenceSscreen的東西,很好用。
但是在用的過(guò)程中,發(fā)現(xiàn)一個(gè)問(wèn)題,不知道是不是我版本的問(wèn)題。我的是24,Android studio 2.2.2
問(wèn)題:ListPreference不顯示內(nèi)容。設(shè)置了entries 和 entryValue沒(méi)有效果。
解決:

**ListPreference
1、需要在代碼里面設(shè)置 entries 和 entryValues ,
2、entries 和 entryValues 在xml中指定不起作用 ,
3、defaultValue要在xml指定,且需要是entryValues的其中一個(gè) **
那么問(wèn)題又來(lái)了,如果是MultiSelectListPreference多選呢?
答案也是一樣,但是有一點(diǎn)需要注意,MultiSelectListPreference設(shè)置default值沒(méi)有用(實(shí)驗(yàn)的結(jié)果,如果有誤請(qǐng)指正)
測(cè)試結(jié)果:
1、在xml里面指定@array/xxx,并且xxx的值是包含在entryValues的其中1個(gè)或者多個(gè),不行

android:defaultValue="2",直接指定單個(gè),不行直接報(bào)錯(cuò)
2、結(jié)果如下
m.setDefaultValue(new String[]{"2","3"});
不行
m.setDefaultValue("2");
指定單個(gè),不行
總結(jié):
- PreferenceScreen官方希望你在fragment中使用,不要用原來(lái)的PreferenceActivity
- PreferenceScreen會(huì)根據(jù)你的key value然后保存到sharePreference中,省去你自己管理的時(shí)間
- PreferenceScreen使用的是Android原生的控件,省去大量寫(xiě)UI的時(shí)間
-
PreferenceScreen還可以自定義UI,所以也很方便
有很多控件可以使用
