在取时,传入getXXX方法中的key是定义在xml文件中的key属性的。
Preference结点下可以使用<intent>标签,通过该标签可以打开别的activity。如下:
<Preference
android:title="打开第二个activity" >
<intent
android:targetClass="com.baigle.customview.SecondActivity"
android:data="xxdata"
android:targetPackage="com.baigle.customview" />
</Preference>
<intent>标签下的android:action,android:mimeType与android:data分别相当于Intent.setAction(),Intent.setType()及Intent.setData()。
虽然在xml文件中指定了defaultValue属性,但系统并不会在程序一运行时就将defaultValue存储到sp中,它只会在加载到关联该xml的界面时才会存储默认。为此,可以在别的界面中调用PreferenceManager.setDefaultValues()提前将默认存储到sp中。
该方法有三个参数,前两个不说,单说第三个,该参数表明是否可以重新将sp中的还原成默认。如果该为true,那么无论何时调用该方法,都会将sp中的还原成默认,即使用户已经修改过。如果该为false,则不会出现上述情况,故当第三个参数为false时,可以很安全地多次调用该方法。
一般会在应用的入口activity的onCreate()中调用该方法,包括main Activity及别的可以进入到应用的activity。
当用户选择完毕时,需要将用户的选择进行保存。Preference有一系列persisXXX方法用于保存数据,只要在适合的地方保存就行。preferencemanager比如DialogPreference中的onDialogClosed()中。
如果在Preference中获取保存的数据,可以通过getPersistedXXX系列方法进行获取。
在很多时候,可能需要一个界面展示列表。用户点击某个条目后才展示具体的设置。具体设置的展示方式有两种:如果屏幕不够宽就重新开启一个新屏幕;如果屏幕够宽,可以在屏幕的剩余部分展示。具体如下面的图(来自谷歌官方文档)


为实现上述的情况,可以使用Preferences Header。虽然当屏幕不够宽的时候可以使用Preference Screen,但是没办法实现屏幕够宽时的要求。
1,每一组设置都用一个PreferenceFragment。
2,创建header文件,并且声明它所关联的PreferenceFragment。
3,创建一个PreferenceActivity用来承载header文件,并且重写其中的onBuildHeaders()。此时不需要重写onCreate(),也不需要调用addPreferencesFromResource()。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-49638-3.html
01用自己流量只能微信qq了