Android RadioGroup/RadioButton Selection - 不同 Android API 16/17 - 不能 Select Radiobutton

Android RadioGroup/RadioButton Selection - Different in Android API 16/17 - Cannot Select Radiobutton

我正在尝试设置对单选组中第一个单选按钮的选择。 在我深入探讨这个问题之前,我需要指出问题只发生在 API <= 16 中。当 运行 在 API 17 或更高版本的模拟器或真实设备中时,一切完美运行。

它应该做什么

RadioButton 变量 'first' 应该指向代码中前面创建的第一个 RadioButton。然后应将此 RadioButton 设置为已选中。如前所述,代码在 API 17 及更高版本上运行良好(我已经看到 API 16 的其他问题,主要与绘图和填充有关,但与此无关),这就是我的原因如此迷茫。逻辑必须没问题,否则根本行不通?但是您可以在日志中看到,每个 API.

上的 'first' 运行ning 中保存了不同的值

如果需要,我很乐意 post 更多 details/logs 等等

代码

//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

看起来,对于较旧的 Android 版本,每个动态创建的 RadioButton 都必须使用 setId 为其指定一个 ID。 我不需要对此做任何事情,但是把它放在那里意味着 RadioButton 的设置正确,我测试过,现在一切都在旧的 API 中工作。

看来我的问题是没有正确添加 RadioGroup 的 RadioButton,但如前所述,这只发生在 API 17.

之前

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

NullPointerException in RadioGroup.setOnCheckedChangeListener in APIS 15 & 16