【问题标题】:how to check all the CheckBox are checked on button Click in android如何检查所有 CheckBox 是否在按钮上被选中
【发布时间】:2016-11-25 19:23:52
【问题描述】:

下面是我检查所有强制性CheckBox 的代码,在“下一步”按钮上进行检查。总共有 17 个复选框。但是我在警报框中显示了这个,所以它没有在视图中采用这个布局,也没有在实际布局中计算选中项目的数量。请帮我解决这个问题。

public void showConfirmPopup()
{
    final Dialog dialog = new Dialog(SubmitViewActivity.this);
    dialog.setContentView(R.layout.activity_uikyc);
    dialog.setCancelable(false);
    Button back=(Button)dialog.findViewById(R.id.btn_bck);
    Button next=(Button)dialog.findViewById(R.id.btn_next);
    final CheckBox[] checkboxes;
    checkboxes = new CheckBox[17];

    for(int i=0;i < checkboxes.length; i++){
        checkboxes[i] = (CheckBox) findViewById(getIdName("check_" + (i+1)));
    }

    back.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        dialog.cancel();
    }
    });

    next.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View view) {
        // TODO Auto-generated method stub
    //int lenCheck = checkboxes.length;
    int iCheck = 0;
    for(int i=0;i<checkboxes.length;i++){

        if(checkboxes[i].isChecked()){
            iCheck++;
        }

    }
    Log.e(String.valueOf(iCheck), "count of checked option");
    if(iCheck != 17){
        Toast.makeText(SubmitViewActivity.this, "Confirm all Checkboxes are checked" , Toast.LENGTH_LONG).show();
        dialog.cancel();
    }else if(iCheck == 17){
    dialog.cancel();
    savedetails = new SaveDetails();
    savedetails.execute();
    }
    }
    });

    dialog.show();

}

【问题讨论】:

  • 什么是checkedcheckboxes 在哪里定义?你有检查改变的听众吗?更多信息会有所帮助。
  • checked 定义在哪里以及如何设置它的值
  • @AmulyaKhare 不,我不想使用任何已检查更改的侦听器。我刚刚在布局中使用了 17 个复选框
  • @Manju checked 是什么?它在哪里初始化?你在哪里 findViewById 这 17 个复选框?
  • @hiphopdroid 它是私有布尔检查[];

标签: android checkbox android-checkbox


【解决方案1】:

试试这个..

将 xml 中的 CheckBox id 更改为 check_1,check_2,check_3...check_17 如下所示,每 17 个

       <CheckBox
            android:id="@+id/check_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="check_1" />

java

在全局变量中清除为CheckBox[] checkboxs; 并像下面这样初始化它

    checkboxs = new CheckBox[17];

    for (int i = 0; i < checkboxs.length; i++) {
        checkboxs[i] = (CheckBox) findViewById(getIdByName("check_" + (i + 1)));
    }

getIdByName 方法

public static int getIdByName(final String name) {

     try {

         final Field field = R.id.class.getDeclaredField(name);

         field.setAccessible(true);
         return field.getInt(null);

     } catch (Exception ignore) {
         return -1;
     }
 }

您可以使用以下代码检查是否选中了复选框。

    for (int i = 0; i < checkboxs.length; i++) {

        if(checkboxs[i].isChecked()){
              iCheck++;
        }
    }

【讨论】:

  • 嗨,它正在抛出 if(checkboxs[i].isChecked()){}
  • @Manju 在扔什么。
  • 空指针异常在我调试时也无法解析 checkboxs[i] 的值
  • @Manju 发布您的完整代码,我将对其进行编辑并发布。
  • @Manju 你把CheckBox[] checkboxs; 添加为全局变量了吗
猜你喜欢
  • 2016-01-11
  • 2012-06-18
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多