gpt4 book ai didi

android - 如何使用 Kotlin 在 Android 中保存开关设置

转载 作者:行者123 更新时间:2023-12-02 13:36:43 27 4
gpt4 key购买 nike

我需要使用 Kotlin 将开关的位置(实际上是 6 个开关)保存为 Android 用户偏好的一部分。

我已经用 Java 编写了代码,没有任何问题,但是这段代码需要在 Kotlin 中。
我正在考虑像在 Java 中一样使用共享首选项,并已成功生成代码来保存一个开关的状态。但是,当我编写代码来添加第二个开关时,第一个开关会控制其他开关,并且它们的状态与第一个开关相同。此外,所有后续切换都将重现相同。
我已经尝试过 Kotlin.org 代码转换器/翻译器,但这会产生一堆乱码,我必须在编译之前清理它们,然后发现翻译的代码可能不完整。

    private fun onSwitch() {

val sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE)
val editor = sharedPreferences.edit()


push_switch1.isChecked = sharedPreferences.getBoolean(PREF_SWITCH, false)
push_switch1.setOnCheckedChangeListener { _, isChecked ->
if (isChecked){
editor.putBoolean(PREF_SWITCH, push_switch1.isChecked)
editor.putBoolean(PREF_SWITCH, true)
Toast.makeText(this@MainActivity, "Push Notification ON", Toast.LENGTH_SHORT).show()
} else {
editor.putBoolean(PREF_SWITCH, false)
Toast.makeText(this@MainActivity, "Push Notification Off", Toast.LENGTH_SHORT).show()
}
//editor.apply()
}
email_switch1.isChecked = sharedPreferences.getBoolean(PREF_SWITCH, false)
email_switch1.setOnCheckedChangeListener { _, isChecked ->
if (isChecked){
editor.putBoolean(PREF_SWITCH, email_switch1.isChecked)
editor.putBoolean(PREF_SWITCH, true)
Toast.makeText(this@MainActivity, "Email Notification ON", Toast.LENGTH_SHORT).show()
}else{
editor.putBoolean(PREF_SWITCH, false)
Toast.makeText(this@MainActivity, "Email Notification OFF", Toast.LENGTH_SHORT).show()
}
//editor.apply()
}
editor.apply()

这是一个首选项页面,每个开/关开关打开或关闭特定的用户首选项。此外,开关状态需要保持不变以保留用户的设置。

最佳答案

您的开关 push_switch1 和 email_switch1 都使用相同的 Preference KEY,即 PREF_SWITCH。

您需要为每个交换机添加唯一的 Preference KEY。
添加 PREF_SWITCH_PUSH 和 PREF_SWITCH_EMAIL 首选项。
然后试试这个...

private fun onSwitch() {

val sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE)
val editor = sharedPreferences.edit()


push_switch1.isChecked = sharedPreferences.getBoolean(PREF_SWITCH_PUSH, false)
push_switch1.setOnCheckedChangeListener { _, isChecked ->
if (isChecked){
editor.putBoolean(PREF_SWITCH_PUSH, true)
Toast.makeText(this@MainActivity, "Push Notification ON", Toast.LENGTH_SHORT).show()
} else {
editor.putBoolean(PREF_SWITCH_PUSH, false)
Toast.makeText(this@MainActivity, "Push Notification Off", Toast.LENGTH_SHORT).show()
}
editor.apply()
}
email_switch1.isChecked = sharedPreferences.getBoolean(PREF_SWITCH_EMAIL, false)
email_switch1.setOnCheckedChangeListener { _, isChecked ->
if (isChecked){
editor.putBoolean(PREF_SWITCH_EMAIL, true)
Toast.makeText(this@MainActivity, "Email Notification ON", Toast.LENGTH_SHORT).show()
}else{
editor.putBoolean(PREF_SWITCH_EMAIL, false)
Toast.makeText(this@MainActivity, "Email Notification OFF", Toast.LENGTH_SHORT).show()
}
editor.apply()
}
}

关于android - 如何使用 Kotlin 在 Android 中保存开关设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54700392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com