Android第一行代码——快速入门 Kotlin 编程(7.3 SharedPreferences 存储)

目录

7.3        SharedPreferences 存储

7.3.1        将数据存储到 SharedPreferences 中

7.3.2       从 SharedPreferences 中读取数据 

7.3.3        实现记住密码功能


7.3        SharedPreferences 存储

        不同于文件的存储方式,SharedPreferences 是使用键值对的方式来存储数据的。也就是说, 当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences 还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的;如果存储的数据是一个字符串,那么读取出来的数据仍然是字符串。

        这样你应该就能明显地感觉到,使用SharedPreferences 进行数据持久化要比使用文件方便很 多,下面我们就来看一下它的具体用法吧。

7.3.1        将数据存储到 SharedPreferences 中

        要想使用 SharedPreferences 存储数据,首先需要获取 SharedPreferences 对象。Android 中主要提供了以下两种方法用于得到 SharedPreferences 对象。

01 . Context 类中的 getSharedPreferences() 方法

        此方法接收两个参数:第一个参数用于指定 SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences 文件都是存放在/data/data/<pack age name>/shar ed_pr efs/ 目录下的;第二个参数用于指定操作模式,目前只有默认的 MODE_PRIVATE 这一种模式可选,它和直接传入 0 的效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences 文件进行读写。其他几种操作模式均已被废弃, MODE_WORLD_READABLE  MODE_WORLD_WRITEABLE 这两种模式是在Android 4.2 版本中被废弃的,MODE_MULTI_PROCESS模式是在Andr oid 6.0 版本中被废弃的。

02 . Activity类中的 getPreferences() 方法

        这个方法和 Context 中的 getSharedPreferences() 方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前 Activity 的类名作为 SharedPreferences 的文件名。

        得到了 SharedPreferences 对象之后,就可以开始向 SharedPreferences 文件中存储数据了,主要可以分为3步实现。

(1) 调用 SharedPreferences 对象的 edit() 方法获取一个 SharedPreferences.Editor 对象。

(2) 向 SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用 putBoolean() 方法,添加一个字符串则使用 putString() 方法,以此类推。

(3) 调用 apply() 方法将添加的数据提交,从而完成数据存储操作。

        不知不觉中已经将理论知识介绍得挺多了,那我们就赶快通过一个例子来体验一下 SharedPreferences 存储的用法吧。新建一个 SharedPreferencesTest 项目,然后修改activity_main.xml 中的代码,如下所示:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/saveButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Save Data"/>

</LinearLayout>

        这里我们不做任何复杂的功能,只是简单地放置了一个按钮,用于将一些数据存储到 SharedPreferences 文件当中。然后修改 MainActivity 中的代码,如下所示:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        saveButton.setOnClickListener {
            val editor = getSharedPreferences("data",Context.MODE_PRIVATE).edit()
            editor.putString("name","Tom")
            editor.put
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是 Kotlin 中使用 SharedPreferences 存储注册登录信息的代码示例: 首先,在注册页面中,我们可以使用如下代码将用户输入的用户名和密码保存到 SharedPreferences 中: ```kotlin // 获取 SharedPreferences 实例 val sharedPreferences = getSharedPreferences("my_preferences", Context.MODE_PRIVATE) // 获取用户名和密码输入框中的值 val username = usernameEditText.text.toString() val password = passwordEditText.text.toString() // 使用 SharedPreferences.Editor 将用户名和密码保存到 SharedPreferences 中 val editor = sharedPreferences.edit() editor.putString("username", username) editor.putString("password", password) editor.apply() ``` 接着,在登录页面中,我们可以使用如下代码SharedPreferences 中读取保存的用户名和密码,并与用户输入的用户名和密码进比较: ```kotlin // 获取 SharedPreferences 实例 val sharedPreferences = getSharedPreferences("my_preferences", Context.MODE_PRIVATE) // 获取用户名和密码输入框中的值 val username = usernameEditText.text.toString() val password = passwordEditText.text.toString() // 从 SharedPreferences 中获取保存的用户名和密码 val savedUsername = sharedPreferences.getString("username", "") val savedPassword = sharedPreferences.getString("password", "") // 比较用户输入的用户名和密码与保存的用户名和密码是否一致 if (username == savedUsername && password == savedPassword) { // 登录成功 } else { // 登录失败 } ``` 以上代码中,我们将 SharedPreferences 的名称指定为 "my_preferences",可以根据实际情况修改。另外,我们使用 SharedPreferences.Editor 的 apply() 方法将修改提交到 SharedPreferences 中。apply() 方法是异步的,不会阻塞当前线程,所以比较适合在 UI 线程中使用。如果需要同步提交修改,可以使用 commit() 方法,但建议不要在 UI 线程中使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值