java - android第一个单选按钮在radiogroup中保持选中状态
问题描述
我正在开发我的第一个 Android Studio 应用程序,但我遇到了无法解决的单选按钮问题。我的应用程序是一种多项选择测验,当我检查第一个单选组中的第一个单选按钮时,即使我检查同一个单选组的另一个单选按钮,它仍然处于选中状态,在这种情况下,我同时检查了两个单选按钮时间如下图所示。
但是,其他无线电组工作正常。单选按钮和组以编程方式创建,如下所示:
LinearLayout layoutQuiz = findViewById(R.id.layoutQuiz);
for (int i = 1; i < 5; i++) {
RadioGroup radioGroup = new RadioGroup(this);
radioGroup.setId(i);
TextView text = new TextView(this);
text.setText(i + ") Question text?");
layoutQuiz.addView(text);
for (int j = 1; j < 4; j++) {
RadioButton answer = new RadioButton(this);
answer.setId(j);
answer.setText("answer nr" + j);
radioGroup.addView(answer);
}
layoutQuiz.addView(radioGroup);
radioGroup.setOnCheckedChangeListener((group, checkedId) -> {
//do something
});
}
我该如何解决?提前致谢。
解决方案
当您使用 setId() 检查此答案时,我相信LinearLayout中的 ID 之间存在冲突
我测试了你的代码,它使用了 RadioGroup 的更高 ID
LinearLayout layoutQuiz = findViewById(R.id.layoutQuiz);
for (int i = 1; i < 5; i++) {
RadioGroup radioGroup = new RadioGroup(this);
radioGroup.setId(i*1000); // i make chenge only on this line
TextView text = new TextView(this);
text.setText(i + ") Question text?");
layoutQuiz.addView(text);
for (int j = 1; j < 4; j++) {
RadioButton answer = new RadioButton(this);
answer.setId(j);
answer.setText("answer nr" + j*i);
radioGroup.addView(answer);
}
layoutQuiz.addView(radioGroup);
radioGroup.setOnCheckedChangeListener((group, checkedId) -> {
//do something
});
}
/*
rest of your code
*/
更新
正如@Mnih Ngo 建议的那样,View.generateViewId ()
在以编程方式设置时使用以避免ID冲突
radioGroup.setId(View.generateViewId());
推荐阅读
- jquery - datatables.draw() 不绘制表格
- html - 如何使用 Flask 在 href 链接中链接内部 html 文件
- mongodb - MongoDB聚合:如何检查数组中是否存在包含多个属性的对象
- python - 根据第二列的嵌套字典映射列
- javascript - 解析大对象时动画冻结
- reactjs - 为什么上下文项“复制”没有显示在上下文菜单中,如 ag-grid 文档中所述?
- laravel - Pusher 未使用 laravel echo、laravel 和 vue js 聊天应用程序实时更新
- mapbox - Mapbox 根本找不到地址
- c++ - 每 5 秒更改一次圆圈颜色
- html - 绑定 Ngmodel 时,值未显示在 Angular 选择框中