我正在尝试设置放射线组中第一个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
答案 0 :(得分:1)
看起来,对于较旧的Android版本,必须使用setId为动态创建的每个RadioButton提供ID。 我没有必要对此做任何事情,但是在那里有它意味着RadioButton的设置正确,我测试了,现在所有的东西都在旧的API中工作。
似乎我的问题是RadioGroup的RadioButton没有被正确添加,但如上所述,这只发生在API 17之前。
这里有一个类似的问题与相同的建议解决方案:
NullPointerException in RadioGroup.setOnCheckedChangeListener in APIS 15 & 16