这是我的代码的一部分,其中包括CheckBox(ChckBoxNo):
final CheckBox ChckBoxNo = (CheckBox)promptsView.findViewById(R.id.ChkBoxNo);
ChckBoxNo.setChecked(true);
ChckBoxNo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ChckBoxNo.isChecked()) {
ChckBoxNo.setChecked(false);
}
else if (!ChckBoxNo.isChecked())
{
ChckBoxNo.setChecked(true);
}
}
});
在开始时我在复选框上为isChecked()方法设置了true,然后在复选框上实现了onclicklistener。 当我运行应用程序时,复选框是Checked,因为我定义了eralier,但是当我点击复选框时,它已取消选中,然后再次进行了不必要的检查(我没有再次选中复选框!) 我该怎么做才能解决这个问题,我的代码有什么问题? 谢谢!
答案 0 :(得分:4)
Checkbox
将处理"检查"自动处理 - 您无需自行管理标准用途。
从文档中查看this example。在这里,当捕获到单击事件时,它们正在基于isChecked()
状态执行操作。
答案 1 :(得分:2)
试试这个:
checkBox = (CheckBox) findViewById(R.id.checkBox);
checkBox.setChecked(checkPasswordExist());
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (checkBox.isChecked()) {
// your code to checked checkbox
}
} else {
// your code to no checked checkbox
}
}
});
答案 2 :(得分:1)
你正在与CheckBox作战。复选框改变状态的标准行为,你不需要自己做。
删除setChecked的true和false,然后粘贴一些有用的东西)
答案 3 :(得分:0)
您不需要将已选中的状态设置为已点击的状态。
你要处理特定州的其他一些行动。