Android RadioGroup / RadioButton选择 - 在Android API 16/17中有所不同 - 无法选择Radiobutton

时间:2017-05-11 08:11:19

标签: android android-radiogroup android-radiobutton

我正在尝试设置放射线组中第一个radiobutton的选择。 在我深入研究这个问题之前,我需要提一下,问题只发生在API< = 16中。当在模拟器或真实设备上运行API 17或更高版本时,一切都运行良好。

它应该做什么

RadioButton变量'first'应该指向代码中先前创建的第一个RadioButton。然后应将此RadioButton设置为已选中。如上所述,代码在API 17及更高版本上运行良好(我已经看到了API 16的其他问题,主要与绘图和填充相关,但不是这一个),这就是为什么我很困惑。逻辑必须正常,否则它将无法正常工作?但是你可以在日志中看到在每个API上运行'first'时保持不同的值。

如果需要,我很乐意发布更多细节/日志等。

代码

//Set the default selection
levelChoices.check(first.getId());
Log.d(TAG, "Which is first:  " + first);
Log.d(TAG, "Which is checked:  " + levelChoices.getCheckedRadioButtonId());

登录API 17或以上

Which is first:  android.widget.RadioButton{61c63b2 VFED..C.. ......I. 0,0-
0,0 #1}
Which is checked:  1
//Everything works fine, radio button is selected

登录API 16或更低版本

Which is first:  android.widget.RadioButton@a7886a50
Which is checked:  -1484232112
//No radio button is selected

1 个答案:

答案 0 :(得分:1)

看起来,对于较旧的Android版本,必须使用setId为动态创建的每个RadioButton提供ID。 我没有必要对此做任何事情,但是在那里有它意味着RadioButton的设置正确,我测试了,现在所有的东西都在旧的API中工作。

似乎我的问题是RadioGroup的RadioButton没有被正确添加,但如上所述,这只发生在API 17之前。

这里有一个类似的问题与相同的建议解决方案:

NullPointerException in RadioGroup.setOnCheckedChangeListener in APIS 15 & 16