• Android开发之SharedPreferences的封装


    对于大部分初学者来说,如果想利用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<String, ?> 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(); } }
  • 相关阅读:
    STM32 HAL库I2C的使用以AT24C02为例
    思科ASA防火墙实现双机热备
    Kafka笔记:基础概念和原理 山上下了雪
    OpenCV(一)之图片&视频的加载和显示
    MySql数据库的基本语法
    python 将二进制文件转为文本文件
    Windows安装MySQL及常见报错处理
    Laravel实现mysql的OR
    Laravel实现FIND_IN_SET
    Laravel打印完整SQL
  • 原文地址:https://www.cnblogs.com/1925yiyi/p/7489367.html
Copyright © 2020-2023  润新知