Android app系统设置界面 数据的保存与读取 SharedPreferences 的正确使用

      很开心的是经历过两个多月的努力,项目在11月份即将要交付使用,基础功能已经完成,剩下的是系统设定界面没有开发完毕,如下图:


       很显然要实现的功能是几个界面要显示很多数据,要依据某一项进行排序,当勾选的选项被选中时,菜单切换到该界面时,就要按照这个字段进行排序,所以需求是用户点击的字段,需要保存下来,当用户退出程序,再次进入的时候,需要获得已经保存的字段的值,也就是显示打钩的那项,解决方案如下:

       第一个方案:脑子里第一个冒出来的就是使用sqlite来保存数据,这样每次进入应用的时候,重新从数据库里面获取该字段的值,不过鉴于保存数据不多,都是一些string、int或者boolean类型,用数据库有点大材小用,(关于sqlite的部分有兴趣的同学可以参考别的文章,这里就不多说了)。


      第二个方案:是公司同事(我师傅),他在登陆界面为了记录用户的登陆状态,采用了类似于windows里的注册表的功能来保存登陆状态,Android的系统属性相当于windows的注册表,由key和value组成,且都是核心系统的一个基本机制。相对于windows的注册表,Android的系统属性要简单一些,它没有windows注册表的树状结构,而只是一个列表,也就是说没有父子关系。value有string,int,long,boolean,但是设置只能通过字符串方式。(这是从该博文截取出来的,有兴趣的可以参考:android “注册表”),这个方案其实和第三个方案,功能是类似的,只不过范围更大,介绍第三个方案。

     第三个方案也就是本博文提到的Sharepreferences,这个类实现的功能我的理解是:保存一个应用程序的基本类型变量,保存在该应用的xml文件下(data/data/包名/shared_prefs/),可以双击打开,就可以看到我们保存的变量,具体的sharepreferences的用法我就不多讲了,有很多很好的博文:sharepreferences博文1,其实真的很好用,只要在我的应用中:当用户点击了某一个项,通过监听textview点击事件,更换带钩的背景图片,存下shareperferences的变量,在用户再次登录的时候,然后获取刚才保存的变量,只需要拿到该key,就可以拿到value,分享一个一位前辈提供的sharepreferences的工具类,不用再那么麻烦的创建和保存了,再次感谢:

package client.verbank.mtp.allone.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

/**
 * SharedPreferences操作工具类
 * 
 */
public class SharepreferencesUtilSystemSettings {
	public final static String SETTING = "Setting";

	public static void putValue(Context context, String key, int value) {
		Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE)
				.edit();
		sp.putInt(key, value);
		sp.commit();
	}

	public static void putValue(Context context, String key, boolean value) {
		Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE)
				.edit();
		sp.putBoolean(key, value);
		sp.commit();
	}

	public static void putValue(Context context, String key, String value) {
		Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE)
				.edit();
		sp.putString(key, value);
		sp.commit();
	}

	public static int getValue(Context context, String key, int defValue) {
		SharedPreferences sp = context.getSharedPreferences(SETTING,
				Context.MODE_PRIVATE);
		int value = sp.getInt(key, defValue);
		return value;
	}

	public static boolean getValue(Context context, String key, boolean defValue) {
		SharedPreferences sp = context.getSharedPreferences(SETTING,
				Context.MODE_PRIVATE);
		boolean value = sp.getBoolean(key, defValue);
		return value;
	}

	public static String getValue(Context context, String key, String defValue) {
		SharedPreferences sp = context.getSharedPreferences(SETTING,
				Context.MODE_PRIVATE);
		String value = sp.getString(key, defValue);
		return value;
	}
}
        具体我的逻辑代码在上一篇博文有,有问题欢迎交流,谢谢各位!!!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值