为什么我的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
}

此处的代码为putInt(key2, insertedText)insertedText是一个字符串,但您将其另存为int。请改用putString。此外,我建议您将首选项设置为常量,以避免出现错误。

insertedText is a String object. So You can't save it as an `int`.

如果您想将其保存为String,请使用此

putString(key2, insertedText)

或者,如果你只想把它保存为int,那么把insertedText转换成int,然后保存它

putInt(key2, insertedText.toInt())

相关内容

  • 没有找到相关文章

最新更新