翻墙点我查看。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
public static void setDefaultValues(Context context, String sharedPreferencesName, int sharedPreferencesMode, int resId, boolean readAgain)
protected void onCreate(Bundle savedInstanceState) {
......
PreferenceManager.setDefaultValues(this, R.xml.default_value, false);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String option = prefs.getString("key", null);
}
好了,控件使用就到这里了。
关于Preference控件家族的使用比较简单,自定义网上也一大把,所以不再给出例子。如果你想看例子可以参考如下:
官方Settings设计原理。
Settings源码。
其他的相关用法参考API及网络例子。
扯蛋了这么多,唉,叹个气继续吧,接下来就到了有意思的环节,源码结构简介。这里只是针对Preference控件特性介绍分析,不会过多追究View及Activity和Fragment细节,具体View及Activity和Fragment细节后面会写文章分析的。
首先还记得上面基础说了,PreferenceFragment使用第一步就是使用其内部方法addPreferencesFromResource或者addPreferencesFromIntent设置源。所以这里我们以addPreferencesFromResource为例来说明,如下源码:
//PreferenceFragment的方法
public void addPreferencesFromResource(int preferencesResId) {
//判断异常说明了该方法至少得在super.onCreate方法之后调运,以便初始化PreferenceManager
requirePreferenceManager();
//这个前面也介绍过的,设置根布局PreferenceScreen
setPreferenceScreen(mPreferenceManager.inflateFromResource(getActivity(),
preferencesResId, getPreferenceScreen()));
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-49639-5.html
周边国家会重新选边站
打倒苹果手机
孤独暗自泪下来