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

时间:2018-10-13 12:17:23

标签: android checkbox

我想为该复选框创建一个验证。例如,如果提供者未选中其中一个复选框,它将发出Toast消息,“请至少选中您的选择之一。”

我的界面:-

enter image description here

我的验证方法编码:-

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”选项,则吐司消息始终显示。

2 个答案:

答案 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字段。