【问题标题】:i want to change the image when i click on a check box我想在单击复选框时更改图像
【发布时间】:2026-01-12 11:30:01
【问题描述】:

我希望当我第一次单击此复选框时,它应该从我的图像视图中更改图像,当我再次单击同一个复选框时,它应该将图像视图中的图像更改为另一个图像。

我试过了:-

checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
         if(isChecked){
             myImage.setBackgroundResource(R.drawable.saveimage);
         }else{
             myImage.setBackgroundResource(R.drawable.deleteimage);
         }
     }
 });

【问题讨论】:

  • 您当前的代码出了什么问题?
  • 你有什么错误吗?
  • 用 myImage.setImageResource(); 替换你的代码
  • @Michael Dodd 和 Rohit5k2 它没有显示任何错误,当我第一次选择复选框时它在我的图像视图中设置了一个图像但是当我再次单击它时它什么也没做

标签: android checkbox


【解决方案1】:

完成了:-

全局获取 (boolean switchStatus = false);

if(switchStatus == true){
    dialog.dismiss();
    image1.setImageResource(R.drawable.icon_delete);
    switchStatus = false;
}else{
    dialog.dismiss();
    image1.setImageResource(R.drawable.icon_checkmark);
    switchStatus = true;
}

【讨论】:

  • 这段代码可以简化。使用if (switchStatus) {,在if/else语句结束后使用switchStatus = !switchStatus翻转其值,而不是手动设置为truefalse。你想让我用这个简化来编辑你的答案吗?
  • (说实话,这也可以使用ternary operator 减少到仅 3 行代码,但这对于这个问题的范围来说可能有点太高级了)
【解决方案2】:

除了没有使用 setchecked 方法之外,您的代码没有任何问题。当你检查你的 chechbox 时,打电话给checkbox.setchecked(true),当你取消它时,打电话给checkbox.setchecked(false)

【讨论】:

    【解决方案3】:

    因为你的图片在 Drawable 中,我认为你应该试试这个:

    checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
             if(isChecked){
                 myImage.setImageDrawable(getResources().getDrawable(R.drawable.saveimage,getApplicationContext().getTheme()));
             }else{
                 myImage.setImageDrawable(getResources().getDrawable((R.drawable.deleteimage,getApplicationContext().getTheme()));
             }
         }
     });
    

    【讨论】:

      最近更新 更多