【发布时间】:2016-02-01 19:59:47
【问题描述】:
这是一个棘手的问题。
我有两个复选框,我想根据是否单击复选框将一些文本附加到字符串。 例如。如果单击 checkbox1,它会将“A”添加到字符串“result”中 如果单击 checkbox2,它会将“B”添加到字符串“result”
我尝试了几种不同的方法,显然最接近的一种是 onClick。
final CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkBox);
checkBox1.setChecked(false);
checkBox1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (checkBox1.isChecked()) {
builder.append(value1).append("\n");
Toast.makeText(MainActivity.this, "item selected", Toast.LENGTH_LONG).show();
}
else {
builder.append("");
}
}
});
final CheckBox checkBox2 = (CheckBox) findViewById(R.id.checkBox2);
checkBox2.setChecked(false);
checkBox2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (checkBox2.isChecked()) {
builder.append(value2).append("\n");
Toast.makeText(MainActivity.this, "item selected", Toast.LENGTH_LONG).show();
} else {
builder.append("");
}
}
});
我也尝试了 onChangedState 或类似的东西,但它不适合我的目的。
按照正常行为,如果单击一次,则附加“A”,如果单击两次,则附加“”。 然而,如果我点击三下,我会附加“A”“A”,而不仅仅是“A”。
您知道如何解决这种麻烦吗?可能是对/错的陈述?
【问题讨论】:
-
我想别的 builder.setLength(builder.length() - 5);但是(1)如果我不在同一个复选框上单击两次怎么办?例如我单击 checkbox1,然后单击 checkbox2,然后再次单击 checkbox1 以取消勾选:它会删除 Checkbox1 或 Checkbox2 生成的附加项吗? (2) 如果长度是可变的怎么办?如果长度为 6 或更高,我无法擦除 -5