博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发之SharedPreferences的封装
阅读量:6502 次
发布时间:2019-06-24

本文共 5633 字,大约阅读时间需要 18 分钟。

对于大部分初学者来说,如果想利用SharedPreferences进行数据存储的话大部分人(包括本人)应该会这样:

存储:

SharedPreferences sharedPreferences = getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);      Editor editor = sharedPreferences.edit();      editor.putString("username", "Tom");      editor.putInt("password", 123456);      editor.commit();

获取:

SharedPreferences sharedPreferences = getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);      String username = sharedPreferences.getString("username", "");      int password = sharedPreferences.getInt("password", 0);

虽然这样做代码没多少,如果是对于初学者练习来说无伤大雅。但是如果你是做一个项目开发来说,里面使用了大量的数据存数。每次都将上面的代码一遍一遍的重复,估计能让人崩溃。所以,对于实际项目开发来说,最好能将可以封装的工具类封装就进行封装。

下面是一个封装好的SharedPreferences的工具类,如果你有需要直接引用就OK:

package com.example.utl;import java.util.Map;import android.content.Context;import android.content.SharedPreferences;/** * 保存信息配置类 *  * @author admin */public class SharedPreferencesHelper {    private SharedPreferences sharedPreferences;    /*     * 保存手机里面的名字     */private SharedPreferences.Editor editor;    public SharedPreferencesHelper(Context context,String FILE_NAME) {        sharedPreferences = context.getSharedPreferences(FILE_NAME,                Context.MODE_PRIVATE);        editor = sharedPreferences.edit();    }    /**     * 存储     */    public void put(String key, Object object) {        if (object instanceof String) {            editor.putString(key, (String) object);        } else if (object instanceof Integer) {            editor.putInt(key, (Integer) object);        } else if (object instanceof Boolean) {            editor.putBoolean(key, (Boolean) object);        } else if (object instanceof Float) {            editor.putFloat(key, (Float) object);        } else if (object instanceof Long) {            editor.putLong(key, (Long) object);        } else {            editor.putString(key, object.toString());        }        editor.commit();    }    /**     * 获取保存的数据     */    public Object getSharedPreference(String key, Object defaultObject) {        if (defaultObject instanceof String) {            return sharedPreferences.getString(key, (String) defaultObject);        } else if (defaultObject instanceof Integer) {            return sharedPreferences.getInt(key, (Integer) defaultObject);        } else if (defaultObject instanceof Boolean) {            return sharedPreferences.getBoolean(key, (Boolean) defaultObject);        } else if (defaultObject instanceof Float) {            return sharedPreferences.getFloat(key, (Float) defaultObject);        } else if (defaultObject instanceof Long) {            return sharedPreferences.getLong(key, (Long) defaultObject);        } else {            return sharedPreferences.getString(key, null);        }    }    /**     * 移除某个key值已经对应的值     */    public void remove(String key) {        editor.remove(key);        editor.commit();    }    /**     * 清除所有数据     */    public void clear() {        editor.clear();        editor.commit();    }    /**     * 查询某个key是否存在     */    public Boolean contain(String key) {        return sharedPreferences.contains(key);    }    /**     * 返回所有的键值对     */    public Map
getAll() { return sharedPreferences.getAll(); }}

登录界面:

 Activity中应用:

/** * 登录界面 *  * @author admin *  */public class LoginActivity extends Activity implements OnClickListener {    private EditText username;    private EditText password;    private Button login;// 登录按钮    private CheckBox holdPwd;// 保存用户和密码    private MyDialog mydialog;// 自定义对话框    private SharedPreferencesHelper sharedPreferencesHelper;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_login);        init();    }    /**     * 初始化界面     */    private void init() {        sharedPreferencesHelper = new SharedPreferencesHelper(                LoginActivity.this, "anhua");        username = (EditText) findViewById(R.id.username);        password = (EditText) findViewById(R.id.password);        holdPwd = (CheckBox) findViewById(R.id.login_hold);        holdPwd.setChecked(true);      //取出存储的值在登陆界面中显示        username.setText(sharedPreferencesHelper.getSharedPreference("username", "").toString().trim());        password.setText(sharedPreferencesHelper.getSharedPreference("password", "").toString().trim());         login = (Button) findViewById(R.id.login);        login.setOnClickListener(this);    }    @Override    public void onClick(View v) {        // TODO Auto-generated method stub        switch (v.getId()) {        case R.id.login:            login();            break;        default:            break;        }    }    private void login() {        String name = username.getText().toString().trim();        String pwd = password.getText().toString().trim();      //如果复选框被选中则存储账户和密码        if (holdPwd.isChecked()) {            sharedPreferencesHelper.put("username", name);            sharedPreferencesHelper.put("password", pwd);            sharedPreferencesHelper.put("isremember", holdPwd.isChecked());        } else {
       //如果复选框未被选中则清除记录的账号和密码 sharedPreferencesHelper.remove("username"); sharedPreferencesHelper.remove("password"); sharedPreferencesHelper.remove("isremember"); } login.setBackgroundResource(R.drawable.bg_login_submit); login.setTextColor(getResources().getColor(R.color.white)); Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); finish(); }}

 

转载于:https://www.cnblogs.com/1925yiyi/p/7489367.html

你可能感兴趣的文章
php session作用,session的作用是什么
查看>>
php 两行数据合并,PHP如何实现统计数据合并
查看>>
java国外研究综述,国内外研究现状_毕业论文
查看>>
php执行事务,thinkPHP框架中执行事务的方法示例
查看>>
php 两个值比较大小写,php比较两个字符串(大小写敏感)的函数strcmp()
查看>>
java3d获取模型在xoy平面的投影,将3D世界点投影到新视图图像平面
查看>>
php 修改图片src,jq修改src图片地址 .attr is not a function
查看>>
sudo php 无法打开,从PHP / Apache,exec()或system()程序作为root用户:“ sudo:无法打开审核系统:权限被拒绝”...
查看>>
Microsoft dotnetConf 2015 一些整理
查看>>
在Android Studio中使用shareSDK进行社会化分享(图文教程)
查看>>
转载:APP的上线和推广——线上推广渠道
查看>>
******IT公司面试题汇总+优秀技术博客汇总
查看>>
Java线
查看>>
poj 1789 Truck History(kruskal算法)
查看>>
HA for openstack
查看>>
更改文件、图片名称思路,我们的名字在以后添加_2等待
查看>>
Android:Notification的生成与取消
查看>>
使用ggbio在R中制作弦图
查看>>
JAVA多线程与并发学习总结
查看>>
【开源】分享2011-2015年全国城市历史天气数据库【Sqlite+C#访问程序】
查看>>