【问题标题】:Shared preference override element if same type如果类型相同,则共享首选项覆盖元素
【发布时间】:2018-12-17 14:01:59
【问题描述】:

我有一个视图,其中有一些元素(下拉菜单、复选框...)。

对于下拉菜单,我将所选项目的位置保存在我的共享首选项中。 (所以一个int)

对于复选框,我想存储一个 Int(如果为 false,则为 0,否则为 1),但如果我的复选框的状态为 false (0),则下拉列表的选定值是 0 项

为什么?

见我的助手:

class PreferenceHelper(context: Context) {

    val PREFERENCE_NAME = "SharedPreference"
val PREFERENCE_DEPARTEMENT = "0"
val PREFERENCE_ACTU = false
val PREFERENCE_INFOS_PRATIQUE = false
val PREFERENCE_ALERTES = false


val preference = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE)
val editor = preference.edit()

fun getPreferenceAlert() : Boolean{
    return preference.getBoolean(PREFERENCE_ALERTES.toString(), false)
}

fun setPreferenceAlertes(checked : Boolean){
    preference.edit().putBoolean(PREFERENCE_ALERTES.toString(), checked).apply()
}
fun getPreferenceActu() : Boolean{
    return preference.getBoolean(PREFERENCE_ACTU.toString(), false)
}

fun setPreferenceActu(checked : Boolean){
    preference.edit().putBoolean(PREFERENCE_ACTU.toString(), checked).apply()
}
fun getPreferenceInfo() : Boolean{
    return preference.getBoolean(PREFERENCE_INFOS_PRATIQUE.toString(), false)
}

fun setPreferenceInfoPratique(checked : Boolean){
    preference.edit().putBoolean(PREFERENCE_INFOS_PRATIQUE.toString(), checked).apply()
}
fun getPreferenceDepartement() : Int{
    return preference.getInt(PREFERENCE_DEPARTEMENT, 0)
}

fun setPreferenceDepartement(position : Int){
    preference.edit().putInt(PREFERENCE_DEPARTEMENT, position).apply()
}
}

【问题讨论】:

    标签: kotlin sharedpreferences


    【解决方案1】:

    您正在将首选项的值转换为字符串,而不是为每个首选项提供唯一的键。

    【讨论】:

    • 那我应该改变什么?
    • 你是对的,我只是将我的每个 val 的值更改为一个键,它就可以工作。我认为 val 是关键。谢谢!
    • 请改进你的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2023-03-04
    • 2019-09-01
    相关资源
    最近更新 更多