第二次单击复选框不会显示 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);
}
我有一个奇怪的问题。当我第一次点击复选框时它起作用了,但是当我取消选中并再次选中时,图像不会显示。 请帮忙
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);
}