我正在创建RadioButton
的数字(计数)。我无法使用RadioGroup
,因为我需要RadioButton
旁边的Button
,每个TableRow
。然而,与所有RadioButton
一样,一次只能选择一个onCheckedChanged
。我想我可以设置id,并在rb = new RadioButton[count];
For-loop....
rb[i] = new RadioButton(this);
rb[i].setId(5000 + i);
rb[i].setOnCheckedChangeListener(this);
上读取它,将你点击的所有内容改为false。
onCheckedChanged
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
for (int i = 0; i < count; i++)
{
if (buttonView.getId() == 5000 + i)
{
// Its the one
}
else
{
// Its not the one
RadioButton rb = (RadioButton) findViewById((5000 + count));
rb.setChecked(false);
}
}
}
:
RadioButton
我会抓住正确的.setChecked(false)
,但是当我尝试NullPointerException
时,它会给我一个{{1}},我不明白为什么。
答案 0 :(得分:1)
您正在为RadioButtons
的{{1}}设置ID 5000
到5000 + (count - 1)
(RadioButton
数组的大小为count
,但ID为{ {1}}因为你从count - 1
(?!?)开始循环。在0
子句中,您要查找布局中不存在的标识为else
的{{1}},以便最终得到空引用。
编辑:
模拟RadioButton
的代码应如下所示:
在5000 + count
循环中,您构建了RadioGroup
:
for
其中RadioButtons
是一个侦听器实例:
rb[i].setOnCheckedChangeListener(checkListener);
//...
答案 1 :(得分:0)
这显示NullPointerException,因为它没有获取已检查的RadioButton的id。而不是使用isCheked()方法来检查天气radiobutton是否被检查。试试这个
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
for (int i = 0; i < count; i++)
{
if (buttonView.isChecked())
{
// perform your task here
}
else
{
// Do something here.........
}
}
}
希望这有助于:)