Android应用Preference相关及源码浅析(Preference组件家族篇)

| public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) | @deprecated,当Preference控件被点击时,触发该方法。参数preference为点击的对象,返回值true代表点击事件已成功捕捉,无须执行默认动作或者返回上层调用,例如,不跳转至默认Intent。 |

| public void setListFooter(View view) | 给Headers list设置foot view。 |

| public void startPreferenceFragment(Fragment fragment, boolean push) | 起一个fragment,push决定是否入栈。 |

| public void startPreferencePanel(String f
ragmentClass, Bundle args, int titleRes, CharSequence titleText, Fragment resultTo, int resultRequestCode) | 依据是否multi-pane模式启动一个preference的fragment(如果是小屏会重启一个activity显示)。 |

| public void startWithFragment(……) | 启动一个新的fragment。 |

| public void switchToHeader(……) | 在大屏multi-pane模式下切换到fragment显示给定参数的fragment。 |

2-4-2 PreferenceFragment相关属性方法使用基础

翻墙点我查看。PreferenceFragment继承自Fragment,这个类是3.0以后推荐使用的,用来处理碎片化问题。

该类的常用方法和上面PreferenceActivity的介绍差不多,这里不再详细说明,只是PreferenceActivity的@deprecated方法在PreferenceFragment中不是@deprecated的而已。

2-4-3 PreferenceManager相关方法使用基础

翻墙点我查看。PreferenceManager继承自Object,这个类其实我们前一篇《Android应用Preference相关及源码浅析(SharePreferences篇)》获取Preference实例就该说明的,这里才说而已。

Android中得到SharedPreference的方式有四种:

  • ContextWrapper.getSharedPreferences(String name, int mode)

可以自己设置SharedPreference的名字与模式。

  • Activity.getPreferences(int mode)

name是Activity名字,不能设置。

  • PreferenceManager.getSharedPreferences()

通过PreferenceManager维护一个SharedPreference,我们可以调用PreferenceManager的API来设置name和mode,并且最终也是调用到ContextWrapper的getSharedPreferences。

  • PreferenceManager.getDefaultSharedPreferences(Context context)

得到的SharedPreference是某个包名下共享私有的,不能让其他的包访问,而且name和mode不能设置,最终也会调用到ContextWrapper的getSharedPreferences。

接下来简单看下PreferenceManager相关方法,如下:

| method | description |

| — | — |

| PreferenceManager.OnActivityDestroyListener | 当所依赖的activity销毁时回调接口。 |

| PreferenceManager.OnActivityResultListener | 当所依赖的activity得到返回result时回调接口。 |

| PreferenceManager.OnActivityStopListener | 当所依赖的activity停止时回调接口。 |

| public Preference findPreference(CharSequence key) | 通过key找到Preference。 |

| public static SharedPreferences getDefaultSharedPreferences(Context context) | 每个应用有一个默认的preferences文件,通过该方法获取。 |

| public SharedPreferences getSharedPreferences() | 通过PreferenceManager维护一个SharedPreference,可以调用PreferenceManager的API来设置name和mode。 |

| public int getSharedPreferencesMode() | 获取当前的mode。 |

| public String getSharedPreferencesName() | 获取当前的name。 |

| public static void setDefaultValues(Context context, String sharedPreferencesName, int sharedPreferencesMode, int resId, boolean readAgain) | 更加灵活的设置默认值,注意readAgain参数。 |

| public static void setDefaultValues(Context context, int resId, boolean readAgain) | 设置默认值,注意readAgain参数。 |

| public void setSharedPreferencesMode(int sharedPreferencesMode) | 设置当前的mode。 |

| public void setSharedPreferencesName(String sharedPreferencesName) | 设置当前的name。 |

可以看见,这个类其实也没啥介绍的,重点关注下setDefaultValues的几个核心参数就行。如果我们的设置项很多,而且每项在代码中都需要设置默认缺省值,那就推荐使用setDefaultValues方法。在应用第一次运行时,从preference的xml中获取缺省值,并生成文件保存(如果已经有一个SharedPrefferences对象,也会进行更新,就像下面代码中三四行对调);不是第一运行就不会改现有保存值。

protected void onCreate(Bundle savedInstanceState) {

PreferenceManager.setDefaultValues(this, R.xml.default_value, false);

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

String option = prefs.getString(“key”, null);

}

好了,控件使用就到这里了。

2-5 Preference控件家族实例

关于Preference控件家族的使用比较简单,自定义网上也一大把,所以不再给出例子。如果你想看例子可以参考如下:

其他的相关用法参考API及网络例子。

【工匠若水 http://blog.csdn.net/yanb

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值