Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我想在单击复选框时更改图像_Android_Checkbox - Fatal编程技术网

Android 我想在单击复选框时更改图像

Android 我想在单击复选框时更改图像,android,checkbox,Android,Checkbox,我希望当我第一次单击此复选框时,它应该从我的图像视图中更改图像,当我再次单击同一复选框时,它应该使用另一个图像更改图像视图中的图像 我试过:- checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

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

我试过:-

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);
         }
     }
 });

除了没有使用setchecked方法之外,代码没有任何问题。选中复选框时,调用
checkbox.setchecked(true)
;取消选中复选框时,调用
checkbox.setchecked(false)

因为您的图像是可绘制的,所以我认为您应该尝试以下方法:

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()));
         }
     }
 });
完成了:-

全局获取(布尔值switchStatus=false)


检查当前代码出了什么问题?是否有任何错误?用myImage.setImageResource()替换代码@Michael Dodd和Rohit5k2当我第一次选中复选框时,它没有显示任何错误,它在我的图像视图中设置了一个图像,但当我再次单击它时,它没有执行任何操作。该代码可以简化。使用
if(switchStatus){
,在
if/else
语句结束后,使用
switchStatus=!switchStatus
来翻转其值,而不是手动设置为
true
false
。您希望我用这种简化方式编辑您的答案吗?(说实话,使用a也可以将代码减少到3行,但这对于这个问题的范围来说可能有点太高级了)
if(switchStatus == true){
    dialog.dismiss();
    image1.setImageResource(R.drawable.icon_delete);
    switchStatus = false;
}else{
    dialog.dismiss();
    image1.setImageResource(R.drawable.icon_checkmark);
    switchStatus = true;
}