Android开发必备技能之Android数据存储(SharedPreference存储)

SharedPreferences 简称 sp,是 Android 平台上一个轻量级的存储类,一般应用程序都会提供“设置”或者“首选项”等这样的界面,那么这些设置就可以通过 sp 来保存。
在 Android 系统中该文件保存在:/data/data/包名 /shared_prefs 目录下。

在本篇中依然使用上篇(文件存储篇)中的需求,只不过将数据的存储方式改为 sp。因此需求和布局就不再赘述。如有需要看上篇:

public class MainActivity extends Activity {

    private EditText et_name;
    private EditText et_pwd;
    private CheckBox cb;
    private SharedPreferences sp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 获取控件
        et_name = (EditText) findViewById(R.id.et_name);
        et_pwd = (EditText) findViewById(R.id.et_pwd);
        cb = (CheckBox) findViewById(R.id.cb);
        /*
         * 调用父类的方法获取 sp 对象 第一个参数:sp 文件的名字,没有则创建 第二个参数:文件权限
         */
        sp = getSharedPreferences("info", MODE_PRIVATE);

        // 数据的回显
        // 从 sp 中获取数据
        String name = sp.getString("name", "");
        String pwd = sp.getString("pwd", "");
        // 给 EditText 设置数据
        et_name.setText(name);
        et_pwd.setText(pwd);
    }

    /*
     * 给登录按钮绑定的点击事件
     */
    public void login(View view) {
        // 获取 EditText 中的数据
        String name = et_name.getEditableText().toString().trim();
        String pwd = et_pwd.getText().toString().trim();
        // 校验数据
        if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
            Toast.makeText(this, R.string.info_txt, Toast.LENGTH_SHORT).show();
            return;
        }
        // 获取 CheckBox 的选中状态
        boolean checked = cb.isChecked();
        // 保存数据 name##pwd
        if (checked) {
            try {
                /*
                 * 如果想往 sp 中添加、修改、删除数据则需要通过 sp 获取到 Editor
                 */
                Editor editor = sp.edit();
                // 设置数据
                editor.putString("name", name);
                editor.putString("pwd", pwd);
                // 一定要记得执行提交方法,不然前面保存的数据没有任何效果
                editor.commit();

            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            // 删除数据
            Editor edit = sp.edit();
            edit.clear();
            edit.commit();
        }
    }
}

最后sp 的使用方法总结
一、获取 SharedPreferences 对象

1. sp = getSharedPreferences("info", MODE_PRIVATE);

二、添加/ 修改数据

1. /*
2. * 如果想往 sp 中添加、修改、删除数据则需要通过 sp 获取到 Editor
3. */
4. Editor editor = sp.edit();
5. // 设置数据
6. editor.putString("name", name);
7. editor.putString("pwd", pwd);
8. // 一定要记得执行提交方法,不然前面保存的数据没有任何效果
9. editor.commit();

三、获取数据

1. /*
2. * 从 sp 中获取数据
3. * 第一个参数相当于 key
4. * 第二个参数是该值如果获取不到的默认值
5. */
6. String name = sp.getString("name", "");
7. String pwd = sp.getString("pwd", "");

四、删除数据

1. // 删除数据
2. Editor edit = sp.edit();
3. //清空所有
4. edit.clear();
5. //删除 key 为 name 的数据
6. edit.remove("name");
7. //提交
8. edit.commit();

五、sp 的连点操作
Editor 的每个方法都返回了自己本身,因此支持连点操作。将添加数据使用连点操作的方式修改
后如下:

1. //连点操作
2. sp.edit().putString("name",name).putString("pwd", pwd).commit();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值