android - 为什么我的 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
。另外,我建议您将首选项键设置为常量以避免错误。
推荐阅读
- android - React Native Android 应用程序安装但不会显示在应用程序启动器中
- google-sheets - 根据多个条件在表中查找结果
- r - R分析大数据框列中的字符串并在单独的列中给出值
- python-3.x - 如果 word_pick 不是 == random_choice,我该怎么办?
- python - 如何为不同的标签制作自定义条件 Keras 函数?
- abap - 如何计算两个日期之间的工作日数?
- javascript - 设置 mxgraph 单元格只能在画布宽度内拖动
- c++ - 尝试使用为 ARM64 构建的 Tensorflow-Lite C api 和 Android 时未定义的引用 - 用于 ARM 的 ndk 独立工具链
- python - SWIG 包装器在类名中添加 new_ 前缀并且无法获取类方法
- laravel - Laravel 中间件可以同时充当前后中间件吗?