博客
关于我
Android的SharePreferences存储的案例(qq账号存储)
阅读量:114 次
发布时间:2019-02-26

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

使用SharedPreferences存储和读取数据

一、保存SharedPreferences数据

要在Android应用中使用SharedPreferences存储数据,首先需要获取SharedPreferences对象,然后通过Editor进行操作,最后提交修改。以下是详细步骤:

  • 获取SharedPreferences对象

    使用getSharedPreferences(String name, int mode)方法获取SharedPreferences对象。name是文件名,mode决定文件操作模式,常用MODE_PRIVATE(私有模式)。

  • 获取可编辑的Editor对象

    调用SharedPreferences.edit()方法获取可编辑的Editor对象,通过Editor对象对数据进行修改。

  • 存储数据

    根据数据类型调用相应的put方法,例如:

    • putString(String key, String value)存储String类型数据。
    • putInt(String key, int value)存储整数。
    • putBoolean(String key, boolean value)存储布尔值。
  • 提交修改

    最后调用commit()方法提交修改,确保数据保存到文件中。

  • 示例代码:

    SharedPreferences sp = getSharedPreferences("data", MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.putString("username", "传智播客");editor.putInt("age", 8);editor.commit();

    二、读取SharedPreferences数据

    要读取SharedPreferences中的数据,需要调用相应的get方法:

  • 获取String数据

    使用getString(String key, String defaultValue)方法,若key不存在则返回默认值。

  • 获取整数数据

    使用getInt(String key, int defaultValue)方法。

  • 获取布尔值数据

    使用getBoolean(String key, boolean defaultValue)方法。

  • 示例代码:

    SharedPreferences sp = getSharedPreferences("data", MODE_PRIVATE);String username = sp.getString("username", "");int age = sp.getInt("age", 0);

    三、删除SharedPreferences数据

    要删除SharedPreferences中的数据,可以使用Editor对象的remove(String key)方法或clear()方法:

    • remove(String key):删除指定key的数据。
    • clear():删除所有数据。

    示例代码:

    SharedPreferences sp = getSharedPreferences("data", MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.remove("username");editor.clear();editor.commit();

    四、案例说明

    程序功能:用户输入QQ账号和密码,点击登录按钮后,弹出提示信息。程序退出后重新启动时,QQ账号和密码仍然显示在EditText中。

    实现步骤

  • 布局文件(activity_main.xml)

    设计EditText和Button布局,确保用户输入账号和密码。

  • 工具类(SaveQQ.java)

    提供保存和读取数据的方法。

  • MainActivity逻辑

    在onCreate方法中初始化组件,设置OnClickListener监听按钮点击事件。
    在onClick方法中获取用户输入,判断是否为空,登录成功后保存数据并弹出提示。

  • 代码示例:

    public class SaveQQ {    public static boolean saveUserInfo(Context context, String account, String password) {        SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE);        SharedPreferences.Editor edit = sp.edit();        edit.putString("username", account);        edit.putString("password", password);        edit.commit();        return true;    }    public static Map
    getUserInfo(Context context) { SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE); String account = sp.getString("username", ""); String password = sp.getString("password", ""); Map
    userMap = new HashMap<>(); userMap.put("account", account); userMap.put("password", password); return userMap; }}

    MainActivity代码:

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private EditText etAccount;    private EditText etPassword;    private Button btnLogin;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        // 获取用户信息并显示在EditText中        Map
    userInfo = SaveQQ.getUserInfo(this); if (userInfo != null) { etAccount.setText(userInfo.get("account")); etPassword.setText(userInfo.get("password")); } } private void initView() { etAccount = (EditText) findViewById(R.id.et_account); etPassword = (EditText) findViewById(R.id.et_password); btnLogin = (Button) findViewById(R.id.btn_login); btnLogin.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_login: String account = etAccount.getText().toString().trim(); String password = etPassword.getText().toString(); if (TextUtils.isEmpty(account)) { Toast.makeText(this, "请输入QQ账号", Toast.LENGTH_SHORT).show(); return; } if (TextUtils.isEmpty(password)) { Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show(); return; } Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show(); boolean isSaveSuccess = SaveQQ.saveUserInfo(this, account, password); if (isSaveSuccess) { Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show(); } break; } }}

    五、验证数据

    在开发工具(如Android Studio)中,检查设备文件夹中的share_prefs目录,找到对应的data.xml文件,确认数据是否正确保存。

    转载地址:http://pulk.baihongyu.com/

    你可能感兴趣的文章
    MySQL 8.0开始Group by不再排序
    查看>>
    mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
    查看>>
    multi swiper bug solution
    查看>>
    MySQL Binlog 日志监听与 Spring 集成实战
    查看>>
    MySQL binlog三种模式
    查看>>
    multi-angle cosine and sines
    查看>>
    Mysql Can't connect to MySQL server
    查看>>
    mysql case when 乱码_Mysql CASE WHEN 用法
    查看>>
    Multicast1
    查看>>
    mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
    查看>>
    MySQL Cluster 7.0.36 发布
    查看>>
    Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
    查看>>
    MySQL Cluster与MGR集群实战
    查看>>
    multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
    查看>>
    mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
    查看>>
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>
    MYSQL CONCAT函数
    查看>>