首页 > 解决方案 > 为什么我的 SharedPreference 没有保存我的数据?

问题描述

下面的代码与我的 DatePicker 方法有关,您可以选择一个日期,TextView 显示选择的日期。

我有一个 saveData 和 loadData 函数,当我从我的 Datapicker 中保存数据时,它不会显示用户在我返回创建的信函后选择的日期,这让我相信我可能输入了错误的信息或将它们混合在 Button 和 TextView 之间。不知道可能出了什么问题,但不是保存,这让我相信有些事情搞砸了。

        <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/btn_timePicker"
                    android:text="What's the date?"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/textTime"
                    android:layout_marginTop="20dp"
                    android:textColor="#000000"
                    android:textSize="22sp"
                    android:textStyle="bold"
                    tools:text="@tools:sample/date/ddmmyy"/>


  loadData()


  btn_timePicker.setOnClickListener {
            saveData()
        }

    private fun saveData() {
        val insertedText = btn_timePicker.text.toString()
        val key1 = "STRING_KEY"
        val key2 = "BOOLEAN_KEY"

        textTime.text = insertedText
        val sharedPreferences = getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE)
        val editor = sharedPreferences.edit()
        editor.apply {
            with(sharedPreferences.edit()) {
                putInt(key1, insertedText.toInt())
            }.apply()
            Toast.makeText(this@NewsActivity, "Data Saved", Toast.LENGTH_SHORT).show()
        }
    }

    private fun loadData() {
        val sharedPreferences  = getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE)
        val savedString = sharedPreferences.getString("STRING_KEY", null)

        textTime.text = savedString
    }

标签: androidandroid-layoutsharedpreferences

解决方案


这段代码在这里putInt(key2, insertedText)。这insertedText是一个字符串,但您将其保存为int. 改为使用putString。另外,我建议您将首选项键设置为常量以避免错误。


推荐阅读