提问人:Cortod 提问时间:6/21/2023 最后编辑:Cortod 更新时间:6/21/2023 访问量:30
SimpleDateFormat 并将其保存在 SharedPreferences 中
SimpleDateFormat and Save it in SharedPreferences
问:
我正在使用这种结构:
` 类 FT02Activ01:AppCompatActivity() {
private lateinit var data1: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_ft02_activ01)
data1 = findViewById(R.id.data)
loadData()
override fun onStart() {
super.onStart()
data1.text = SimpleDateFormat("dd/MM/yyyy").format(System.currentTimeMillis())
val cal = Calendar.getInstance()
val dateSetListener =
DatePickerDialog.OnDateSetListener { _, year, monthOfYear, dayOfMonth ->
cal.set(Calendar.YEAR, year)
cal.set(Calendar.MONTH, monthOfYear)
cal.set(Calendar.DAY_OF_MONTH, dayOfMonth)
val myFormat = "dd/MM/yyyy"
val sdf = SimpleDateFormat(myFormat, Locale.US)
data1.text = sdf.format(cal.time)
}
data1.setOnClickListener {
DatePickerDialog(
this, dateSetListener,
cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH)
).show()
}
}
private fun saveData() {
val sharedPreferences = getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE)
val editor = sharedPreferences.edit()
editor.putString("data_KEY", data1.text.toString())
editor.apply()
}
private fun loadData(){
val sharedPreferences = getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE)
val savedString = sharedPreferences.getString("STRING_KEY", null)
data1.text = sharedPreferences.getString("data_KEY", null)
`
如果我将 data1 更改为 19/06/2023 并继续并返回此页面,它将带回 20/06/2023,而不是 19/06/2023
我的期望是什么时候去并返回屏幕,我得到 19/06/2023
答:
0赞
Cortod
6/21/2023
#1
在
onStart() {
...
//DATA
if (data1.text.isEmpty()) {
val currentDate =
SimpleDateFormat("dd/MM/yyyy", Locale.US).format(System.currentTimeMillis())
data1.text = currentDate
}
val cal = Calendar.getInstance()
val dateSetListener =
DatePickerDialog.OnDateSetListener { _, year, monthOfYear, dayOfMonth ->
cal.set(Calendar.YEAR, year)
cal.set(Calendar.MONTH, monthOfYear)
cal.set(Calendar.DAY_OF_MONTH, dayOfMonth)
val myFormat = "dd/MM/yyyy"
val sdf = SimpleDateFormat(myFormat, Locale.US)
data1.text = sdf.format(cal.time)
}
data1.setOnClickListener {
DatePickerDialog(
this, dateSetListener,
cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH)
).show()
}
IF 语句解析
0赞
ndriqa
6/21/2023
#2
- 我真的没有看到你在任何地方保存数据。您根本没有使用该方法。
saveData()
- 即使您从 中加载数据,您也会覆盖新数据。基本上,Android Activity 生命周期状态将在 .(在 onStart()' 方法上加载日期)
sharedPreferences
onStart()
onCreate()
onCreate() and then you set another date on the
- 您在方法上设置的新日期不是保存的日期,而是当前日期(
onStart()
System.currentTimeMillis()
)
我建议您阅读有关 Android Activity 和 Fragment Lifecycle 的更多信息,并查看 sharedPreferences 用法的一些示例。
顺便说一句,在保存时间对象时,您可以保存日期的千分之一并转换为日期对象,因为使用日期操作会给转换带来新的麻烦。String
评论
0赞
Cortod
6/22/2023
是的,保存 Data() 在我没有共享的代码的另一部分
评论