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

Android Kotlin 如何将按钮颜色存储到SharedPreferences中

实现方案

首先注意你现有代码有两处可优化点:

  • 点击事件中每个if分支下的number_of_clicks + 1是无效代码,没有赋值效果可以直接删除,你前面已经执行了number_of_clicks++完成了计数累加
  • onSave方法中FachMontag6的findViewById写错了id,写成了R.id.FachMontag5,会导致第6个输入框保存内容异常,建议修正为R.id.FachMontag6

1. 声明全局计数变量

在Activity的onCreate方法外,声明计数变量为全局成员:

private var number_of_clicks = 0

2. onCreate中添加颜色恢复逻辑

在原有读取SharedPreferences输入框内容的逻辑后,添加存储的点击次数读取、颜色恢复代码:

val pref = getPreferences(Context.MODE_PRIVATE)
// 原有读取输入框内容的代码不变
// ...

// 新增:读取按钮点击次数、恢复颜色
val savedClickCount = pref.getInt("FARBE1_CLICK_COUNT", 0)
number_of_clicks = savedClickCount
val farbe1 = findViewById<Button>(R.id.farbe1)
when(savedClickCount) {
    1 -> farbe1.setBackgroundColor(getColor(R.color.white))
    2 -> farbe1.setBackgroundColor(getColor(R.color.yellow))
    3 -> farbe1.setBackgroundColor(getColor(R.color.green))
    4 -> farbe1.setBackgroundColor(getColor(R.color.red))
    5 -> farbe1.setBackgroundColor(getColor(R.color.blue))
    6 -> farbe1.setBackgroundColor(getColor(R.color.purple))
    else -> farbe1.setBackgroundColor(getColor(R.color.teal_700))
}

// 原有按钮点击事件代码不变
// ...

3. onSave方法中添加计数存储逻辑

和保存输入框内容逻辑一致,在editor.commit()前新增点击次数存储代码:

val pref = getPreferences(Context.MODE_PRIVATE)
val editor = pref.edit()
// 原有保存输入框内容的代码不变
// ...

// 新增:保存按钮点击次数
editor.putInt("FARBE1_CLICK_COUNT", number_of_clicks)

editor.commit()

如果后续有多个颜色切换按钮,只需要给每个按钮单独定义对应的SP存储key(比如FARBE2_CLICK_COUNT、FARBE3_CLICK_COUNT),重复上述逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:54:00