一旦选中或取消选中,我是否可以通过编程方式检查checkbox
并将其调用编码为的任何内容?
例如,如果我有一个像这样的复选框
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
Toast.makeText(getContext(), "You checked the checkbox!", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getContext(), "You unchecked the checkbox!", Toast.LENGTH_SHORT).show();
}
}
});
然后会打电话给
checkBox.setChecked(true);
我的复选框会显示已选中,但它不会进行祝酒。
答案 0 :(得分:1)
顾名思义setOnCheckedChangeListener
,如果复选框值实际发生变化,它只会调用您的回调。
因此,如果已经检查过(true),然后调用checkbox.setChecked(true)
,则该值未更改,因此不会调用您的回调。
尝试checkbox.setChecked(false)
,它应该正常工作。
这是我最好的猜测,没有看到你的其余代码/ xml。
答案 1 :(得分:1)
您可以执行以下任何操作
1.单独创建侦听器对象,并在调用setChecked
时手动调用它
2.提取实施onCheckedChanged
的方法,并在更改时手动调用。
答案 2 :(得分:1)
Android小工具'点击或触摸事件不会被模拟。您可以通过编程方式更改窗口小部件的状态,例如禁用,启用,选中或取消选中,但在状态更改时执行任何任务,您必须通过触摸该窗口小部件手动更改其状态。
答案 3 :(得分:0)
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Toast.makeText(getContext(), "You checked the checkbox!", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getContext(), "You unchecked the checkbox!", Toast.LENGTH_SHORT).show();
}
}
});
Just Cheked it。它对我有用。
答案 4 :(得分:0)
如果您在LinearLayout中添加复选框(我们将其称为checkLayout),如下所示:
val widget = AppCompatCheckBox(checkLayout.context)
val params = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
widget.tag = "something you can specify later"
checkLayout.addView(widget)
获取所选复选框的代码如下:
checkLayout.children.forEach { cb ->
if(cb is AppCompatCheckBox && cb.isChecked){
// here you have your checkbox and by tag maybe you can do whatever you want
}
}
对于动态添加的RadioButton,您可以将它们添加到RadioGroup中(我们将其称为radioLayout)并像这样获得所选内容:
val rb: AppCompatRadioButton? = radioLayout.findViewById(radioLayout.checkedRadioButtonId)
if(rb.tag == "something"){
//your code here
}