You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android偏好设置迁移后EditTextPreference值无法显示求助

偏好设置迁移后值不显示的解决办法

针对禁用的「Compte」字符串偏好不显示账户名的问题

在新的PreferenceFragmentCompat体系里,禁用的EditTextPreference不会自动把保存的值显示出来,得手动绑定summary:

  • 打开你的偏好Fragment,在onCreatePreferences里找到这个偏好,添加这段代码:
val comptePref = findPreference<EditTextPreference>("compte_key") // 替换成你XML里的实际key
comptePref?.run {
    // 先把当前保存的值设为summary
    summary = text
    // 后续值变化时自动更新summary
    setOnPreferenceChangeListener { _, newValue ->
        summary = newValue as String
        true
    }
}
  • 要是想在XML里配置,也可以写android:summary="%s",但禁用状态下有时候不会自动触发summary更新,还是代码绑定更可靠。

针对可编辑的「Nom de jours」整数偏好不显示数值的问题

默认EditTextPreference不会自动把整数转成字符串显示在summary上,得手动处理类型转换:

  • 同样在Fragment的onCreatePreferences里处理:
val joursPref = findPreference<EditTextPreference>("jours_key") // 替换成实际key
joursPref?.run {
    // 初始显示已保存的数值,注意空值判断
    text?.let { summary = it }
    // 值变化时更新summary,顺便做整数校验
    setOnPreferenceChangeListener { _, newValue ->
        val num = (newValue as String).toIntOrNull() ?: 0
        summary = num.toString()
        true
    }
}
  • 另外记得在XML里给这个偏好设置android:inputType="number",防止输入非数字内容,也可以加android:summary="%s",但要确保值能正确转成字符串填充进去。

额外排查要点

  • 确认你使用的是androidx.preference:preference库,旧的android.preference已被弃用,新库的组件行为和旧版存在差异。
  • 检查XML中偏好的key和代码里读取的是否一致,也可以通过调试查看SharedPreferences里是否正确保存了对应的值。
  • 禁用状态的偏好,新库不会自动更新summary,必须手动绑定值到summary。

内容的提问来源于stack exchange,提问作者Chris972

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:57:21