【问题标题】:get checkbox checked on first click在第一次单击时选中复选框
【发布时间】:2014-10-07 20:52:01
【问题描述】:

我正在动态创建一些复选框。我想一次只检查一个复选框。我已经使用 setChecked(false) 方法实现了这一点。它工作正常,问题是当我取消选中第一个复选框并单击第二个复选框时,它会在第二次被选中。我想要第一时间检查。

我用过的代码-

 cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 
 {
   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)
   {
      Log.e("isChecked",""+isChecked);
      if(isChecked==true)
      {
        count++;
        sendData(j);

        if(count>1)
        {
            //cb[i].setChecked(false);
            buttonView.setChecked(false);
            count=0;
        }
     }
  };

【问题讨论】:

  • 你是如何添加它的?你是否为每个复选框提供了 id?
  • @yuva-我将它添加到 for 循环中。我没有提供任何 ID,但如果需要,我可以提供。
  • @NehaAgarwal : 在同一个RadioGroup 中添加Radio Button 怎么样

标签: android checkbox


【解决方案1】:

@neha 试试这个...

@Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
                {
                    if(isChecked)
                    {
                        if(count==0)
                        {
                            count++;
                            Toast.makeText(MainActivity.this, "count="+count, 0).show();
                            return;
                        }
                        buttonView.setChecked(false);
                    }
                    else
                    {
                        count--;
                        Toast.makeText(MainActivity.this, "count="+count, 0).show();
                        return;
                    }
                }

【讨论】:

    【解决方案2】:

    删除..

      if(isChecked==true)
    

    在此之后,我认为它会根据您的要求工作......

    【讨论】:

      【解决方案3】:

      你需要根据checkuncheck使用count变量点击次数 -

      试试这样 -

      int i;
      int count = 0;
      for (i = 0; i < 10; i++) {
          CheckBox cb = new CheckBox(this);
          cb.setTag(Integer.valueOf(i));
          cb.setText("CheckBox " + i);
          cb.setChecked(false);
          cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
              @Override
              public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                  Log.e("isChecked",""+isChecked);
      
                  if (isChecked) {
                      count++;
                  } else {
                      count--;
                  }
      
                  if (count > 1) {
                      buttonView.setChecked(false);
                      count--;
                  }
              }
          });
      }
      

      【讨论】:

      • 不会取消选中当前选中的复选框吗?我猜他希望选中当前复选框并取消选中前一个复选框..
      • @AcidBurn - 最初是count = 0,然后他选中了复选框。现在count = 1。然后他再次选中另一个复选框。现在count = 2。所以buttonView.setChecked 将变为假,他会看到该复选框未选中。这样,一个复选框将被视为始终选中。
      • 好吧,我误解了需求。我认为他需要一个像选择这样的单选按钮。
      • @VedPrakash-它不起作用。甚至复选框也没有点击此代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多