下面的代码与我的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())