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

点击ImageButton切换图片后,返回Activity时如何保存该状态?

保存ImageButton的切换状态

方法一:利用Activity状态保存机制(临时保存)

这种方式适合处理Activity因系统回收、屏幕旋转等场景重建时的状态恢复,但用户主动退出Activity后再进入,状态会丢失。

修改代码如下:

class suspect : AppCompatActivity() {
    private val KEY_IMAGE_STATE = "image_state"
    private var isImageSwitched = false

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_suspect)
        // 记得初始化ImageButton,替换成你的实际id
        val imagebutton = findViewById<ImageButton>(R.id.imagebutton)
        
        // 恢复之前保存的状态
        savedInstanceState?.let {
            isImageSwitched = it.getBoolean(KEY_IMAGE_STATE, false)
            if (isImageSwitched) {
                imagebutton.setImageResource(R.drawable.picture2)
            }
        }

        imagebutton.setOnClickListener {
            isImageSwitched = true
            imagebutton.setImageResource(R.drawable.picture2)
        }
    }

    // 在Activity被销毁前保存状态
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putBoolean(KEY_IMAGE_STATE, isImageSwitched)
    }
}

方法二:持久化保存(长期保留状态)

如果需要退出APP后再次打开仍保留切换后的图片,用SharedPreferences存储状态:

class suspect : AppCompatActivity() {
    private val PREF_NAME = "ImageStatePrefs"
    private val KEY_IMAGE_SWITCHED = "is_image_switched"
    private var isImageSwitched = false

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_suspect)
        val imagebutton = findViewById<ImageButton>(R.id.imagebutton)
        
        // 从本地读取保存的状态
        val prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE)
        isImageSwitched = prefs.getBoolean(KEY_IMAGE_SWITCHED, false)
        if (isImageSwitched) {
            imagebutton.setImageResource(R.drawable.picture2)
        }

        imagebutton.setOnClickListener {
            isImageSwitched = true
            imagebutton.setImageResource(R.drawable.picture2)
            // 把状态写入本地存储
            prefs.edit().putBoolean(KEY_IMAGE_SWITCHED, isImageSwitched).apply()
        }
    }
}

注意事项

  • 必须确保imagebutton通过findViewById或视图绑定完成初始化,原代码中缺少这一步,记得补充。
  • 若使用视图绑定,需在模块的build.gradle中启用相关配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:40:25