SharedPreferences工具类

SharedPreferences是Android中一种存储方式,主要用来存储记录简单的小数据,比如开关状态,按钮状态等一些设置信息,简单的用户信息等等,在App中也比较常用,这里写了一个工具类方便以后项目的使用.

新建一个工程SharedPreferences:

在activity_main.xml文件中添加两个按钮,一个存储数据,一个取出数据:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/btn_save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="133dp"
        android:text="存储数据" />

    <Button
        android:id="@+id/btn_get"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/btn_save"
        android:layout_alignBottom="@+id/btn_save"
        android:layout_marginLeft="40dp"
        android:layout_toRightOf="@+id/btn_save"
        android:text="取出数据" />

</RelativeLayout>
新建一个SharedPreferencesUtil.java:

代码比较简单,一个存储数据的方法,一个取数据的方法,可以存取String,Boolean,Integer,Float,Long的类型的数据

/**
 * 
 * @author Grrsun SharedPreferences工具类 用来方便保存和读取数据
 *
 */
public class SharedPreferencesUtil {

	// 保存的数据的文件名
	private static final String FILE_NAME = "share_data";

	/**
	 * 保存数据
	 */
	public static void savaData(Context context, String key, Object value) {

		// 获取数据类型
		String type = value.getClass().getSimpleName();
		// 参数1 文件保存路径 参数2 文件类型
		SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
		SharedPreferences.Editor editor = sp.edit();

		if (type.equals("String")) {
			editor.putString(key, (String) value);
		}
		if (type.equals("Integer")) {
			editor.putInt(key, (Integer) value);
		}
		if (type.equals("Boolean")) {
			editor.putBoolean(key, (Boolean) value);
		}
		if (type.equals("Float")) {
			editor.putFloat(key, (Float) value);
		}
		if (type.equals("Long")) {
			editor.putLong(key, (Long) value);
		}
		editor.commit();
	}

	/**
	 * 读取数据
	 */
	public static Object getData(Context context, String key, Object defaultValue) {

		String type = defaultValue.getClass().getSimpleName();
		SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);

		if (type.equals("String")) {
			return sp.getString(key, (String) defaultValue);
		}
		if (type.equals("Integer")) {
			return sp.getInt(key, (Integer) defaultValue);
		}
		if (type.equals("Boolean")) {
			return sp.getBoolean(key, (Boolean) defaultValue);
		}
		if (type.equals("Float")) {
			return sp.getFloat(key, (Float) defaultValue);
		}
		if (type.equals("Long")) {
			return sp.getLong(key, (Long) defaultValue);
		}
		return null;
	}
}
在MainActivity.java中通过两个按钮存取数据:

代码中用了第三方注解工具ButterKnife,在我的另一篇博文 Android依赖注入类库 Butter Knife的使用 中有ButterKnife的使用配置方法

public class MainActivity extends Activity {

	private SharedPreferencesUtil sputil;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ButterKnife.inject(this);
		sputil = new SharedPreferencesUtil();
	}

	@OnClick({ R.id.btn_save, R.id.btn_get })
	public void operate(View v) {
		switch (v.getId()) {
		case R.id.btn_save:
			save();
			break;
		case R.id.btn_get:
			get();
			break;

		default:
			break;
		}
	}

	/**
	 * SharedPreferences保存数据
	 */
	@SuppressWarnings("static-access")
	private void save() {
		sputil.savaData(this, "name", "良辰");
		sputil.savaData(this, "age", 23);
		sputil.savaData(this, "isMarry", false);
		sputil.savaData(this, "height", 173.2f);
		sputil.savaData(this, "weight", 62L);
	}

	/**
	 * SharedPreferences获取数据
	 */
	@SuppressWarnings("static-access")
	private void get() {
		String name = (String) sputil.getData(this, "name", "");
		int age = (Integer) sputil.getData(this, "age", 0);
		boolean isMarry = (Boolean) sputil.getData(this, "isMarry", true);
		float height = (Float) sputil.getData(this, "height", 0.0f);
		long weight = (Long) sputil.getData(this, "weight", 0L);
		System.out.println("--" + name + ":" + age + ":" + isMarry + ":" + height + ":" + weight);
	}

}

别忘了在AndroidManifest.xml中加入读取数据的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

完工后,运行程序:

点击存储数据,然后我们打开Eclipse的DDMS,点击根目录的data->data:

在第二个data文件夹下找到你的程序包名文件夹,继续点开,找到生成的share_data.xml文件,点击DDMS菜单栏右上角的导出按钮导出到计算机你指定的位置:

打开导出的xml文件,我们可以看到已经存储到本地的数据:

这说明我们的存储数据的方法是没问题的,接下来我们验证获取数据的方法,点击取出数据按钮,我们查看一下Eclipse打印的的log信息,可以看到打印出了以下数据:

这说明我们的取数据的方法也是没问题的.

这样既当复习了知识,同时以后在其他项目中也可以直接拿来用了.



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值