您的位置:首页 > 其它

保存数据 之 键值对的设置

2013-03-20 11:14 387 查看
如果有一些小数据的键值对需要保存,可以用
SharedPreferences
这个类里面的API。
SharedPreferences 对象指向一个包含键值对的文件,并且提供了一些读取和写入键值对的方法。SharedPreferences 是被framework层管理的,可以是私有的,也可以被共享。


注意:SharePreferences 仅仅是操作键值对,不可以和
Preference
混淆,[code]Preference会创建一个设置界面,尽管它里面还是用
SharePreferences
来保存信息。想了解更多请阅读:
PreferenceSettings


处理
SharedPreferences


你可以创建一个新 的SharePreferences 文件或者是获取一个已经存在,我们可以使用下面的方法:

getSharedPreferences()
利用这个方法可以通过名称来获取到一个可以共享的preference 文件,名称在第一个参数里面指定,可以用你的activity里面的任何一个Contextd对象

来获取它。

getPreferences() 这个方法获取的到时针对这个activity的共享preference 文件。因为这个文件仅仅是针对这个activity的,所有不需要提供一个名称。


比方说,下面的这个代码是在一个
Fragment里面执行的,获取了一个由字符串资源里面的R.string.preference_file_key命名的preference 文件,设置wie私有模式,这样这个文件就仅仅可以被你的APP访问。


[code]Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);

当命名共享的preference文件的时候,你需要使用一个在你的APP里面唯一的字符串标示,就像"com.example.myapp.PREFERENCE_FILE_KEY"

另外,如果仅仅是针对一个activity需要共享的preference文件的时候,可以使用
getPreferences()方法。


SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

警告:如果创建shared preferences文件的时候使用了
MODE_WORLD_READABLE
or
MODE_WORLD_WRITEABLE属性,任何其他的app如果知道你的这个文件的名称,都可以访问你的数据。


写数据到
Shared Preferences


要往shared preferences里面写数据,需要调用SharedPreferences 的
edit()获取一个
SharedPreferences.Editor对象。


然后用这个Editor里面的方法来写入数据,列入putInt()
和[code]putString()。然后调用commit()保存写入的结果。如下:


SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();


从Shared Preferences里面读取数据

从一个shared preferences里面读取数据,可以调用
getInt()
getString()这类方法,如果对应的键值对存在,会获取到对应的键值对的值,否则,会返回一个默认数值。这个数值可以自己指定。


SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: