首页 > Android开发之--Preferences的使用

Android开发之--Preferences的使用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在android程序中,记录用户的偏好是个能极大提升用户体验的功能。Android里面的Preferences正式为此事而生。

Preferences可以用来记录简单的整数,布尔值,字符串等数据,且在各个Activity之间均能访问,主要用来实现程序的参数设置功能。最简单的用法是写两行代码自己创建,如下:

//从应用的任意处获得Preferences
SharedPreferences mPerferences = PreferenceManager  .getDefaultSharedPreferences(this);  //从Preferences中获得一个值,如果不存在则值为null
String loginName = mPerferences.getInt("name", null);  if(loginName == null){Log.v("Preferences", "User not login");
}//获得Editor编辑Preferences的值
SharedPreferences.Editor mEditor = mPerferences.edit();  mEditor.putInt("name", "admin");  
//将更新后的值提交
mEditor.commit();



通过这种方式,应用会在自己的数据文件夹下新建一个名为shared_prefs的文件夹,并创建一个以应用包名为名称的xml文件存放Preferences的值。也就是这些preferences的值不只是跨activity的,更能在程序下次启动的时候获得。如果有特别的需求(比如记录多个用户的配置信息),还可以自定义存放Preferences值的文件的名字:

SharedPreferences mPerferences = PreferenceManager.getSharedPreferences("file-name", 0);




如果应用中设置信息不多,使用上面的方法完全没问题。Preferences还有更高级的用法--使用PreferenceActivity 。PreferenceActivity 是专门为程序的设置界面而设计的一个特殊的activity,配合这个activity的界面xml文件不是在res/layout下,而是res/xml/Preferences.xml。将你要设置的选项按照一定的格式写在res/xml/Preferences.xml中,并在继承了PreferenceActivity 的Activity的onCreate函数中加入代码:

addPreferencesFromResource(R.xml.preferences);
则程序就会自动生成一个android风格的设置界面。



关于Preferences.xml的格式,这里有一个复杂的文档供学习:




既然Preference可以用来保存app的配置信息,那么那些一改变设置就能立刻引发界面或程序改变的效果是怎么做的呢?答曰:onSharedPreferenceChangeListener。如下。注意,当使用SharedPreferences.Editor改变了一个值后切莫忘记调用commit函数,否则触发器就会一直触发。

public class xxxActivity extends Activity implements
OnSharedPreferenceChangeListener { //private SharedPreferences prefs;@Overridepublic void onCreate() { //super.onCreate();this.prefs = PreferenceManager.getDefaultSharedPreferences(this);this.prefs.registerOnSharedPreferenceChangeListener(this);Log.i(TAG, "onCreated");}public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { //if(key.equals("****")){//do someting}}
}




转载于:https://my.oschina.net/gesuper/blog/166978

更多相关:

  • android:id 为控件指定相应的IDandroid:text 指定控件的文本,置尽量使用strings.xmlandroid:grivity 指定控件的基本位置 ,比如举重,居右,android:padding 指定控件的内边距,控件当中的内容android:singleLine 如果设置为真的话,则将控件的内容在同一行当中显示...

  • 布局主要分两个 其中主布局是

  • 大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它。它的使用更加简单,只需要创建一个 AnimationDrawabledF对象来表示Frame动画,然后通过addFrame 方法把每一帧要显示的内容添加进去,并设置播放间隔时间,本例子中间隔时间为5S, 最后通过start 方法就可。 以播放这个动画了,...

  • 作业要求: 作一个显示框里面分成三行 一二行占这个框的1/2 第三行独占1/2 第三行里面分成两列第一列占25%,第二列占75%。 屏幕显示效果 实现步骤:  

  • 一:Service简介 Android开发中,当需要创建在后台运行的程序的时候,就要使用到Service。 1:Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交...