代码之家  ›  专栏  ›  技术社区  ›  EPAgg

如何使用Kotlin保存Android中的开关设置

  •  0
  • EPAgg  · 技术社区  · 7 年前

    我已经用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()
    

    0 回复  |  直到 7 年前
        1
  •  1
  •   arjay bernardino    7 年前

    您需要为每个交换机添加唯一的首选项。 添加PREF\u SWITCH\u PUSH和PREF\u SWITCH\u 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()
        }
    }