Android RadioGroup checkedId超出范围

时间:2016-03-28 15:07:01

标签: android radio-button

我正在做一个应用程序,我必须为初始选定项目生成具有某些基本值的复选框,然后更改它的值。那里没什么复杂的。

我的问题是当我重置布局时,我使用新的RadioButtons创建一个新的RadioGroup,并为RadioGroup创建一个新的OnCheckedChangeListener。但是当我在重置UI后单击一个复选框时,来自侦听器的checkId输出的东西太大了我的RadioGroup。

这是我的代码。我不会显示重置部分,但主要是调用removeAllViews()然后再次生成布局。

final RadioGroup optGroup = new RadioGroup(getActivity());
optGroup.setOrientation(LinearLayout.HORIZONTAL);
for(int itemNo = 0; itemNo < cell.getList().countItems(); itemNo++){
    RadioButton rButton = new RadioButton(getActivity());
    rButton.setText(cell.getList().getItem(itemNo).getLabel());
    optGroup.addView(rButton);
    if(cell.getSelectedListItem().getLabel().equals(cell.getList().getItem(itemNo).getLabel())){
        optGroup.check(itemNo+1);
    }
}
optGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        cell.selectListItem(String.valueOf(checkedId));
    }
});
linearLayout.addView(optGroup);

当我记录输入时,在重置UI之前,输出的范围是1到3(我有3个复选框),重置后的范围是4到6。

编辑初次检查也是第一次使用,就像第三次显示的范围是4到6一样。

谢谢!

1 个答案:

答案 0 :(得分:1)

您应该设置radioButton ID

rButton.setId(itemNo);

但请确保不要使用0作为Id。 由于每个RadioButton Id必须是唯一的,我想OS会跟踪第一次运行时使用的自动生成的ID(1-3)。然后在重置后,它与4-6,(从3恢复计数)