如何检查复选框后的标签?

时间:2017-01-10 16:51:37

标签: android android-studio checkbox

我试过这个:

private int[] intCheckBox = {
        R.id.monCheck,
        R.id.tueCheck,
        R.id.wedCheck
};

private CheckBox[] realCheckBox = new CheckBox[intCheckBox.length];

private int i;

然后:

 for (i=0;i<intCheckBox.length;i++){
        realCheckBox[i] = (CheckBox) findViewById(intCheckBox[i]);
        realCheckBox[i].setTag(i);
        realCheckBox[i].setOnCheckedChangeListener(showFinal);
    }

}

private CompoundButton.OnCheckedChangeListener showFinal = new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        String outPut2 = "";

        if (realCheckBox[i].isChecked()){
            outPut2 += realCheckBox[i].getTag();
            outPutText3.setText(outPut2);

        }

然而,当我运行应用程序时,我检查了其中一个框后显示错误,错误是:

E/AndroidRuntime: FATAL EXCEPTION: main
              java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

我知道还有另一种方法可以通过逐个设置标记来获取标记甚至字符串...但是,我想使用数组来显示标记,以便进行进一步的编码以获得&#34; whatIReallyWantToGet&#34;:

的int值
 java.util.Calendar cal = java.util.Calendar.getInstance();
        cal.set(Calendar.MONTH, position);
        cal.set(Calendar.DAY_OF_WEEK, whatIReallyWantToGet);
        cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
        int month = cal.get(Calendar.MONTH);
        String output = "";
        while (cal.get(Calendar.MONTH) == month) {
            output += cal.get(Calendar.DAY_OF_MONTH) + "/" + (cal.get(Calendar.MONTH) + 1) + ",";
            cal.add(Calendar.DAY_OF_MONTH, 7);
        }

我在网上搜索了很长时间。但没用。我只是一个来自教科书和在线资源的新学习者。请帮助或尝试提供一些如何实现这一点的想法。非常感谢你!

1 个答案:

答案 0 :(得分:0)

从你分享的代码中,我觉得你没有重置变量i的值。

这可以解释为什么异常表明你试图访问数组的索引3

  

E / AndroidRuntime:致命异常:主要                 java.lang.ArrayIndexOutOfBoundsException: length = 3;索引= 3