SharedPreferences工具类

来源:互联网 发布:域名费用 编辑:程序博客网 时间:2024/05/29 04:36

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;@Overrideprotected 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