我想为该复选框创建一个验证。例如,如果提供者未选中其中一个复选框,它将发出Toast消息,“请至少选中您的选择之一。”
我的界面:-
我的验证方法编码:-
else if(!(cbBM.isChecked()) || !(cbBI.isChecked()) || !(cbMath.isChecked()) || !(cbSc.isChecked()))
{
Toast.makeText(getActivity(), "Please tick at least one of your selections.", Toast.LENGTH_SHORT).show();
}
我的编码复选框:-
cbBM = view.findViewById(R.id.bm);
cbBM.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked)
{
if (isChecked) {
//DO NOTHING
}
else {
Toast.makeText(getActivity(), "Please tick at least one of your selections.", Toast.LENGTH_SHORT).show();
}
}
});
我遇到的问题是,如果我没有勾选“ Bahasa Melayu”选项,则吐司消息始终显示。
答案 0 :(得分:1)
使用Employee
(逻辑AND)运算符代替&&
(逻辑OR)。
使用||
运算符,如果未选中任何复选框,您将看到吐司。
试试这个:
||
如果要使用侦听器,请按如下所示对其进行修改:
if(!cbBM.isChecked() && !cbBI.isChecked() && !cbMath.isChecked() && !cbSc.isChecked())
并为其他3个复选框(如上面的复选框)创建3个侦听器。
这是cbBM = view.findViewById(R.id.bm);
cbBM.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked)
{
checkNoSelection()
}
});
方法:
checkNoSelection()
答案 1 :(得分:0)
注意,当first express为true时,不检查其余的表达式。因此,如果未选中Bahasa Melayu,则在逻辑表达以下始终等于true,因此始终显示吐司消息。
!(cbBM.isChecked()) || !(cbBI.isChecked()) || !(cbMath.isChecked()) || !(cbSc.isChecked())
您可以尝试以下方法:
private boolean showHint = true;
if(cbBM.isChecked()) showHint = false;
if(cbBI.isChecked()) showHint = false;
if(cbMath.isChecked()) showHint = false;
if(cbSc.isChecked()) showHint = false;
if(showHint == true){
Toast.makeText(getActivity(), "Please tick at least one of your selections.", Toast.LENGTH_SHORT).show();
}
编辑:
在其他位置添加上述代码,可以在submit
按钮中单击侦听器,然后将showHint
更改为class字段。