zoukankan      html  css  js  c++  java
  • Preference的 相关类 及 常用方法

          前几篇博客 介绍的参数的xml配置中所使用到的一些参数标签,其实都是一些系统中实现好的类,他们负责参数的呈现及相关操作,所以,我们也可以在代码中创建参数元素并进行配置。

    一、个相关的类及常用方法

    1、使用PreferenceActivity

    public abstract class PreferenceActivityextendsListActivity implements PreferenceManager.OnPreferenceTreeClickListener

           该类为抽象类,使用时,从该类派生子类,既可以实现参数的管理。该类使用的是一个ListView的布局来呈现内容

           该类拥有一个PreferenceManager实例,用于从activity或者xml文件创建参数树

    2、参数管理器PreferenceManager

           这个类用来帮助从activity或者xml文件创建参数树。

    该类拥有一个SharedPreferences实例,这个实例指向了一些 由他管理的包含了这些参数值的文件。同时,也拥有一个SharedPreferences.Editor实例,该实例从SharedPreferences实例中获得,具有获取和修改参数值的功能。

     

    3、几个常用的方法

      PreferenceActivity.setPreferenceScreen(PreferenceScreen preferenceScreen)

    作用:设置要显示的参数树的根,也即最上层的那个参数页

    返回值:无。


      PreferenceActivity.getPreferenceScreen()

    作用:获得这个activity所显示的 参数树的根

    返回值:PreferenceScreen句柄。


      PreferenceActivity.addPreferencesFromResource(int preferencesResId)

    作用:展开给定的xml资源文件,并将其中的参数树添加到当前的参数树中

    返回值:无。

      PreferenceActivity.onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)

    作用:派生子类时重载该函数,以实现参数项点击时的操作。

    返回值:boolean。

      PreferenceActivity.findPreference(CharSequencekey)

    作用:获取 指定关键字的参数项每一个参数项在配置的时候,指定了一个key值,由该值可以匹配到 对应的参数项。

    返回值:Preference对象。

     PreferenceManager.getDefaultSharedPreferences(Context context)

    作用:静态方法,获取一个SharedPreferences实例,该实例指向了在给定的context中被preference所使用的文件,这些文件保存了参数的信息。获得了SharedPreferences对象之后调用SharedPreferences.edit()可以获得一个Editor,通过Editor可以对参数值进行读取和修改。

    返回值:SharedPreferences对象。

      PreferenceManager.createPreferenceScreen(Context context)

    作用:为指定的context创建一个PreferenceScreen实例并返回。使用这个实例可以从代码中手动的添加参数树

    返回值:PreferenceScreen对象。

    getPreferenceScreen().removePreference(Preference preference); //这样 删除的是一级 节点

     


    二、加载参数树


        加载参数树有两种模式,一是从xml文件导出,二是在代码中手动添加

    1、从xml文件导出

           配置参数的xml文件可以放在工程目录的res/xml中。

           借助于PreferenceActivity,从它派生子类,并实现Preference.OnPreferenceChangeListener接口。在子类的onCreate方法中,通过调用:

    PreferenceActivity.addPreferencesFromResource(int preferencesResId)从指定的参数资源文件中加载参数树。这个参数树由父类PreferenceActivity管理,使用起来很方便。

    通过调用:

    PreferenceActivity.getPreferenceScreen()可以获得之前加载的参数树的根对象

    调用PreferenceActivity.findPreference(CharSequence key)可获得指定名字的参数项。

    2、使用代码手动添加

    从PreferenceActivity派生一个子类,在该子类的onCreate方法中手动 添加参数树。

    (1)获得参数树的根Preference;

    getPreferenceManager().createPreferenceScreen(context).

    (2)按参数树的层级关系,创建参数元素,并添加到参数树的对应位置中。

    添加使用到方法:PreferenceGroup.addPreference(Preference preference)。参数元素的类级别关系如下:

    PreferenceGroup及其子类可以使用addPreference方法添加参数项

    创建参数元素时参数的 属性设置

    参数元素的属性设置方法可以参看android源代码,大部分均以“set”开头。xml文件中可以配置的属性,均可以使用代码来配置

    (3)提交参数树

           创建好参数树后,调用PreferenceActivity.setPreferenceScreen(PreferenceScreen preferenceScreen)方法提交参数树,该参数树的内容就能够显示出来

    三、如何操作参数


      如何操作参数,即如何读取和修改参数。使用PreferenceActivity派生的子类,在如下几个函数中添加操作。

    重载的方法

    要做的事情

    onCreate

    加载参数树

    onResume

    初始化、更新参数页面中参数值

    onPause

    保存当前的参数值

    onPreferenceChange

    实现的Preference.OnPreferenceChangeListener接口,在此处理一些参数发生了变化的事情,不必在此保存参数值,处理后返回true

    参数值的读取:

    (1)、获取对应的SharedPreferences实例:

    调用SharedPreferences pre = PreferenceManager.getDefaultSharedPreferences(Context context)获得。

    (2)、使用pre读取参数值:

    读取的方法,大多以“get”开头,可以传入默认值。如:

    int mWriteColor = pre.getInt("WriteColor", 0xFFFF0000);

    如果没有该参数,则返回默认值0xFFFF0000。

    参数值的保存:

    (1)、获取参数值访问接口:

    Editor editor = mSharedPref.edit();

    其中,mSharedPref为SharedPreferences实例,该实例可以通过PreferenceManager.getDefaultSharedPreferences(Context context)获得;

    (2)、写参数值:

    通过editor所提供的方法保存参数值,如

    editor.putBoolean(KEY_NAME_KEY_SOUND, mKeySound);

    是将参数值mKeySound以索引名KEY_NAME_KEY_SOUND保存到SharedPreferences实例所维护的一个数据文件中。

           更多接口方法参看代码。

    (3)、提交:

    只有在设置好了参数值后并调用如下的方法,最终的参数值才会被保存起来。

    editor.commit();

    四、参数数据文件


        preference这种参数访问机制,不允许跨进程使用,每个应用有自己独立的参数数据文件

    (1)文件路径

    系统运行时,应用的参数文件存在于如下路径:

    data/data/packageName/shared_prefs

    例如:

    data/data/com.oppo.HanWangWriterIME/shared_prefs

    导出以上的文件夹,在里面可以找到参数文件。该文件的命名规则为:

    packageNam_preferences.xml

    例如:com.oppo.HanWangWriterIME_preferences.xml




  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/liulaolaiu/p/11744728.html
Copyright © 2011-2022 走看看