第二次单击复选框不会显示 ImageView

Second click on checkbox won`t show ImageView

我有一个奇怪的问题。当我第一次点击复选框时它起作用了,但是当我取消选中并再次选中时,图像不会显示。 请帮忙

private void ratedialog() {

        dialog = new Dialog(this);
        dialog.setContentView(R.layout.dialog);
        dialog.setTitle("Rate it!");
        dialog.setCancelable(true);
        dialog.show();

        seekbar = (SeekBar) dialog.findViewById(R.id.rate_seekbar);
        button_done = (Button) dialog.findViewById(R.id.button_done);
        seekbar_result = (TextView) dialog.findViewById(R.id.seekbar_result);
        checkBox_seen = (CheckBox) dialog.findViewById(R.id.checkBox_seen);

        button_done.setOnClickListener(EditActivity.this);
        seekbar.setOnSeekBarChangeListener(EditActivity.this);
        checkBox_seen.setOnCheckedChangeListener(EditActivity.this);


        seekbar.setProgress(rate);

    }

听众:

@Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        Log.e(TAG, isChecked+"");
        if (isChecked) {
            //seen = true;
            checkBox_seen.setChecked(true);
            Log.e(TAG, "Second time " + isChecked + "");

            image_seen.setImageResource(R.drawable.seen);

        } else {
           // seen = false;
            checkBox_seen.setChecked(false);
            Log.e(TAG, "Third time" + isChecked + "");

            image_seen.setVisibility(View.INVISIBLE);
        }
    }

将您的代码更改为

if (isChecked) {
        //seen = true;
        checkBox_seen.setChecked(true);
        Log.e(TAG, "Second time " + isChecked + "");
        image_seen.setVisibility(View.VISIBLE);
        image_seen.setImageResource(R.drawable.seen);

    } else {
       // seen = false;
        checkBox_seen.setChecked(false);
        Log.e(TAG, "Third time" + isChecked + "");

        image_seen.setVisibility(View.INVISIBLE);
    }

在 Else 条件下,您将可见性更改为 INVISIBLE,以便在您的 if 条件运行时它变得不可见,您不会将可见性更改为可见,这就是图像不显示的原因。

问题是您没有更改选中状态下的可见性设置 CheckBox实例再次选中。

@Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        Log.e(TAG, isChecked+"");
        if (isChecked) {
            //seen = true;
            **checkBox_seen.setChecked(true);// remove this line**
            Log.e(TAG, "Second time " + isChecked + "");
            **image_seen.setVisibility(View.VISIBLE);//Add this line**
            image_seen.setImageResource(R.drawable.seen);//Move this line to `ratedialog()`method.

        } else {
           // seen = false;
            **checkBox_seen.setChecked(false);//Remove this line**
            Log.e(TAG, "Third time" + isChecked + "");

            image_seen.setVisibility(View.INVISIBLE);
        }
    }

简单的代码看起来像

if (isChecked) {
        image_seen.setVisibility(View.VISIBLE);
    } else {
        image_seen.setVisibility(View.INVISIBLE);
 }