Android中ImageButton双击显示后重启APP状态丢失问题求助
要让ImageButton在APP重启后保持可见状态,核心是把按钮的可见性状态持久化存储,用Android自带的SharedPreferences就能简单实现,具体步骤如下:
1. 双击时保存状态到本地
修改你的双击事件代码,在设置按钮为可见的同时,把状态写入SharedPreferences:
holder.binding.date.setOnClickListener(object : DoubleClickListener(){ override fun onDoubleClick(v: View) { holder.binding.markAsImportant.visibility = View.VISIBLE // 存储按钮可见状态 val sharedPref = context.getSharedPreferences("AppSettings", Context.MODE_PRIVATE) with(sharedPref.edit()) { putBoolean("isMarkBtnVisible", true) apply() } Toast.makeText(context, "Marked as important", Toast.LENGTH_SHORT).show() } })
2. 页面初始化时恢复状态
在Adapter的onBindViewHolder方法(或者对应页面的初始化逻辑里),读取之前保存的状态,设置按钮的可见性:
// 读取存储的状态,默认值false对应初始的gone状态 val sharedPref = context.getSharedPreferences("AppSettings", Context.MODE_PRIVATE) val isBtnVisible = sharedPref.getBoolean("isMarkBtnVisible", false) holder.binding.markAsImportant.visibility = if (isBtnVisible) View.VISIBLE else View.GONE
可选:支持取消标记功能
如果需要让用户能把按钮重新设为不可见,只需在按钮的点击事件里更新存储的状态即可:
holder.binding.markAsImportant.setOnClickListener { holder.binding.markAsImportant.visibility = View.GONE val sharedPref = context.getSharedPreferences("AppSettings", Context.MODE_PRIVATE) with(sharedPref.edit()) { putBoolean("isMarkBtnVisible", false) apply() } Toast.makeText(context, "Unmarked as important", Toast.LENGTH_SHORT).show() }
内容的提问来源于stack exchange,提问作者Kwezi Mashapa
相关产品推荐
相关产品推荐

