Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 吐司味精为我的复选框验证而疯狂_Java_Android_Checkbox - Fatal编程技术网

Java 吐司味精为我的复选框验证而疯狂

Java 吐司味精为我的复选框验证而疯狂,java,android,checkbox,Java,Android,Checkbox,我想为复选框创建一个验证。例如,如果提供者没有选中其中一个复选框,它将发出Toast消息,“请至少勾选一个选项。” 我的界面:- 我的验证方法编码:- else if(!(cbBM.isChecked()) || !(cbBI.isChecked()) || !(cbMath.isChecked()) || !(cbSc.isChecked())) { Toast.makeText(getActivity(), "Please tick at least one of

我想为复选框创建一个验证。例如,如果提供者没有选中其中一个复选框,它将发出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”选项,toast消息总是显示。

使用
&&
(逻辑AND)运算符,而不是
|
(逻辑OR)
使用
|
操作符,如果未选中任何复选框,您将看到烤面包片
试试这个:

if(!cbBM.isChecked() && !cbBI.isChecked() && !cbMath.isChecked() && !cbSc.isChecked())
cbBM = view.findViewById(R.id.bm);
    cbBM.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView,
                                     boolean isChecked)
        {
            checkNoSelection()
        }
    });
如果要使用侦听器,请按如下方式修改它:

if(!cbBM.isChecked() && !cbBI.isChecked() && !cbMath.isChecked() && !cbSc.isChecked())
cbBM = view.findViewById(R.id.bm);
    cbBM.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView,
                                     boolean isChecked)
        {
            checkNoSelection()
        }
    });
并为上面的其他3个复选框再创建3个侦听器

这是
checkNoSelection()
方法:

private void checkNoSelection() {
    if(!cbBM.isChecked() && !cbBI.isChecked() && !cbMath.isChecked() && !cbSc.isChecked()) {
           Toast.makeText(getActivity(), "Please tick at least one of your selections.", Toast.LENGTH_SHORT).show();
    }
}

请注意,如果第一个表达式为true,则不会选中剩余表达式。所以,若未勾选Bahasa Melayu,则逻辑表达式下方始终为equal true,所以toast消息始终显示

 !(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
按钮中单击listener,并将
showHint
更改为class字段。

仍然不能。我必须在Bahasa Melayu上打勾,然后祝酒词没有显示。。。。例如,如果我选择除Bahasa Melayu之外的一个选项,它将继续显示消息。@Daisy您是否做了所有更改?查看我编辑的代码。为什么要将
setOnCheckedChangeListener
用于
cbBM
?如果你这样做了,你应该检查
如果(!cbBM.isChecked()&&!cbBI.isChecked()&&!cbMath.isChecked()&&!cbSc.isChecked()&)
否则每次你取消选中
cbBM
@Daisy请查看我的答案,希望对你有帮助。@Daisy抱歉,我的代码错了,我会尽快修改它,把你的名字放进去!在括号内,如if(!cbBM.isChecked())|(!cbBI.isChecked()){}并测试它。@BhoomikaPatel仍然无法。。。