这个工具类来自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");