【问题标题】:How to make set TextView.text persistent in Android app (Kotlin)如何使设置 TextView.text 在 Android 应用程序(Kotlin)中持久化
【发布时间】:2020-11-07 13:26:38
【问题描述】:

我目前正在尝试让 TextView 显示我的 TimePicker 返回的任何日期。它可以工作,但是如果我进入另一个片段并返回,重新启动应用程序等,文本将恢复为我设置的默认值。有谁知道我怎样才能使我设置的文本持久化?这是我正在使用的代码。

view.timeButton.setOnClickListener {
            val cal = Calendar.getInstance()
            val timeSetListener = TimePickerDialog.OnTimeSetListener { timePicker, hour, minute ->
                cal.set(Calendar.HOUR_OF_DAY, hour)
                cal.set(Calendar.MINUTE, minute)

                alarmText.text = ("Texts at " + SimpleDateFormat("HH:mm").format(cal.time))
            }
            TimePickerDialog(
                context,
                timeSetListener,
                cal.get(Calendar.HOUR_OF_DAY),
                cal.get(Calendar.MINUTE),
                false
            ).show()
        }

【问题讨论】:

标签: android kotlin


【解决方案1】:

你可以使用SharedPreference永久保存

view.timeButton.setOnClickListener {
            val cal = Calendar.getInstance()
            val timeSetListener = TimePickerDialog.OnTimeSetListener { timePicker, hour, minute ->
                cal.set(Calendar.HOUR_OF_DAY, hour)
                cal.set(Calendar.MINUTE, minute)

                val simpleDateFormat = SimpleDateFormat("HH:mm")
                val date = simpleDateFormat.format(cal.time)
                alarmText.text = ("Texts at " + date)

                val preferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
                preferences.edit().putString("mydate", date).apply();
                
            }
            TimePickerDialog(
                context,
                timeSetListener,
                cal.get(Calendar.HOUR_OF_DAY),
                cal.get(Calendar.MINUTE),
                false
            ).show()
        }

并在您应用的onCreate 中检索存储的值

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
        try {
            val preferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
            val simpleDateFormat = SimpleDateFormat("HH:mm")
            val date: Date = simpleDateFormat.parse(preferences.getString("mydate", ""))
            alarmText.text = ("Texts at " + date)
        }
        catch (e: ParseException) {
        }
    }

【讨论】:

  • 您好!感谢您的回复,但是当我尝试此操作时,由于某种原因,我的应用程序完全变白,并且没有任何显示。我在 LogCat 中没有收到任何错误,但我所有的按钮、TextView、导航栏等都消失了。
  • 您好!对不起,我刚刚覆盖了错误的onCreate 版本,请使用唯一bundle 参数的版本..
  • np,你能多分享一点onCreate,你在某些情况下使用persistentState吗?
  • 我的错,请将其替换为 super.onCreate(savedInstanceState) 与单个参数 onCreate .. 希望它现在可以工作
  • 我猜alarmTextTextView;不知道你是怎么定义的,比如val alarmText: TextView = findViewById(R.id.my_textview) as TextView
猜你喜欢
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多