PreferenceActivity

 Android系统有四种基本的数据保存方法:一是SharedPreference;二是文件;三是SQLite;四是ContentProvider。
       PreferenceActivity是android提供的对系统信息和配置进行自动保存的Activity,它通过SharedPreference方式将信息保存在XML文件当中,当然,我们也可以通过SharedPreferences来获取PreferenceActivity设置的值。使用PreferenceActivity不需要我们对SharedPreference进行操作,系统会自动对Activity的各种View上的改变进行保存。

       创建一个PreferenceActivity应用的步骤:
       1.创建Android项目,并添加一个Android xml文件preference.xml,类型为Preference,会保存在res/xml路径下。Android为我们提供两种编辑模式,可视化的结构设计及xml源码设计。
preference xml文件中的View是有限的,只有下面几个:
1)CheckBoxPreference:CheckBox选择项,对应的值的ture或flase。
android:key:唯一标识.
android:title:显示标题(大字体显示)
android:summary:副标题(小字体显示)
android:defaultValue:默认值(true或false)
2)EditTextPreference:输入编辑框,值为String类型,会弹出对话框供输入。
android:key:唯一标识.
android:title:显示标题(大字体显示)
3)ListPreference: 列表选择,弹出对话框供选择。下拉框内显示的内容和具体的值需要在res/values/array.xml中设置两个array来表示。
android:key:唯一标识.
android:title:显示标题(大字体显示)
android:dialogTitle:弹出对话框的标题
android:entries:列表中显示的值。为一个数组,通过资源文件进行设置。
androide:entryValues:列表中实际保存的值,与entries对应。为一个数组,通过资源文件进行设置。
4)Preference:只进行文本显示,需要与其他进行组合使用。
android:key:唯一标识.
android:title:显示标题(大字体显示)
android:summary:副标题(小字体显示)
android:dependency:附属,即标识此元素附属于某一个元素(通常为CheckBoxPreference),dependency值为所附属元素的key。
5)PreferenceCategory:用于分组。
android:title:显示的标题
android:key:唯一标识符。SharedPreferences也将通过此Key值进行数据保存,也可以通过key值获取保存的信息 (以下相同)。
6)PreferenceScreen:PreferenceActivity的根元素,设置页面,可嵌套形成二级设置页面,用Title参数设置标题。
7)RingtonePreference:系统玲声选择。
android:title:设置标题
android:summary:设置说明
android:dialogTitle:设置铃声选择框的标题

       2.创建一个继承自PreferenceActivity类。
public class PreferenceTest extends PreferenceActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //所的的值将会自动保存到SharePreferences
        this.addPreferencesFromResource(R.xml.preference);
    }
}

       3.当PreferenceActivity上View有所更改时,系统会自动将对应的值更新到xml配置文件中,该文件在android的file explorer中的data/data/包名/shared_prefs/路径下。

       4.为了响应PreferenceActivity的操作,只要重写PreferenceActivity的onPreferenceTreeClick的方法就可以了,通过参数preference来判断是对那一个元素进行的,并根据需要进行操作。
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
 return false;
}

       5.获取配置信息
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); value = prefs.getXxx("xxx", "xxx");
当其他地方需要使用配置时,可以直接调用preference.getXXX()方法来获取配置信息(preference为xml文件名)。

原文地址:https://www.cnblogs.com/hummersofdie/p/2418058.html