SharedPreferences 的一个单利工具类MyPrefs

这个工具类来自https://www.jianshu.com/p/43c0e22daa15    密码锁

MyPrefs.java

package com.share.jack.numberlockdemo.util;

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


public class MyPrefs {
	private static MyPrefs myPrefs;//私有化
	private SharedPreferences sp;
	//提供私有的构造方法
	private MyPrefs(){}
	/**
	 * 对外提供的初始化方法
	 * @return
	 */
	public static MyPrefs getInstance(){
		//初始化自身对象
		if(myPrefs == null){
			myPrefs = new MyPrefs();
		}
		return myPrefs;
	}

	/**
	 * 初始化SharedPreferences对象
	 * @param context
	 */
	public MyPrefs initSharedPreferences(Context context){
		//获取SharedPreferences对象
		if(sp == null){
			sp = context.getSharedPreferences(Consts.PREF_NAME,
					Context.MODE_PRIVATE);
		}
		return myPrefs;
	}

	/**
	 * 向SharedPreferences中写入String类型的数据
	 * @param key
	 * @param value
	 */
	public void writeString(String key, String value){
		//获取编辑器对象
		Editor editor = sp.edit();
		//写入数据
		editor.putString(key, value);
		editor.commit();//提交写入的数据
	}

	/**
	 * 根据key读取SharedPreferences中的String类型的数据
	 * @param key
	 * @return
	 */
	public String readString(String key){
		return sp.getString(key, "");
	}
}
Consts.java
package com.share.jack.numberlockdemo.util;

public class Consts {

	/** SharedPreferences的文件名 */
	public static final String PREF_NAME = "numberlock";
	
}

使用时注意:

1.在第一次存数据时,要先创建好,防止空指针

//保存密码到文件中
//这个行代码就创建了一个名为"numberlock"的一个xml文件
MyPrefs.getInstance().initSharedPreferences(Lock1Activity.this);
lockMyPrefs.getInstance().writeString("password", input);

2.在第二次使用时,取数据password的值

如果你这样写就获取获取不到,(这是一个坑,浪费我好长时间)

String ps = MyPrefs.getInstance().readString("password");

一定要这样写

String ps = MyPrefs.getInstance().initSharedPreferences(Lock1Activity.this).readString("password");

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值