如何获取可以检查的复选框的数量?

时间:2018-04-06 07:28:03

标签: android android-checkbox

我的活动包含3个不同的CheckBox。现在我要验证必须至少选择2 CheckBox但我无法实现此目的。请帮忙。

代码:

Boolean checkPC = chkProtectMoney.isChecked();
Boolean checkGM = chkGrow_my_money.isChecked();
Boolean checkMN = chkMedicalNeeds.isChecked();


if(!(checkPC && checkGM == true) || !(checkGM && checkMN == true) || !(checkPC && checkMN == true) || !(checkPC && checkGM && checkPC == true)){

   Toast.makeText(getActivity(),R.string.two_expertise_caution,Toast.LENGTH_SHORT).show();

} 

4 个答案:

答案 0 :(得分:4)

private boolean checkIfAnyTwoAreChecked() {
    int sum = 0;

    if(checkbox1.isChecked()){ sum++; }

    if(checkbox2.isChecked()){ sum++; }

    if(checkbox3.isChecked()){ sum++; }

    return sum >= 2;
}

答案 1 :(得分:3)

您可以使用int次。

 private int getCheckedCount() {
    int count = 0;
    if (checkBox1.isChecked())
        count++;
    if (checkBox2.isChecked())
        count++;
    if (checkBox3.isChecked())
        count++;
    return count;
}

  if(getCheckedCount()>=2){
    // Do your stuff
}

OR

 if(checkBox1.isChecked() && checkBox2.isChecked()
            || checkBox1.isChecked() && checkBox3.isChecked() 
            || checkBox2.isChecked() && checkBox3.isChecked()){
        // Do stuff
    }

答案 2 :(得分:1)

将条件语句更改为此

if((checkPC && checkGM) || (checkGM && checkMN) || (checkPC && checkMN)) {
    // YOUR CODE
}

答案 3 :(得分:1)

为所有复选框添加checkedChangeListener,并根据检查更新计数,如

int checkedCount = 0;

chkProtectMoney.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
            checkedCount++;
        }else{
           checkedCount--;
        }
        if(checkedCount >= 2){
           // voila
        }else{
           //alert to check atleast two
        }
    }
});
//add for other two same logic then