0

我创建了一个 RadioGroup ,其中包含以下 RadioButtons以及我想要实现的布局

单选按钮

XML 层次结构:

  • 无线电集团
    • 线性布局
      • 单选按钮
      • 单选按钮
    • 线性布局
      • 单选按钮
      • 单选按钮
    • 单选按钮

当然这意味着只有 1 个 RadioButton 仍然是 RadioGroup 的直接子级,这意味着当我单击任何 RadioButtons 时,已经选中的那个不会取消选中。

我正在使用一个非常紧凑的代码来获取选中的 RadioButton,如果它们是直接的孩子的话。

RadioGroup rg = (RadioGroup) v.findViewById(R.id.rgTopupValue);
View radioCheckedView = rg.findViewById(rg.getCheckedRadioButtonId());
RadioButton rb = (RadioButton) rg.getChildAt(rg.indexOfChild(radioCheckedView));

有没有办法在不使用极长案例的情况下解决问题?

4

1 回答 1

3

您的问题似乎没有真正的答案。我认为没有真正的解决方案。但这可能会解决您的问题(这是一种解决方法):

    RadioButton rb1, rb2, rb3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ...
    rb1 = (RadioButton) findViewById(R.id.rb1);
    rb2 = (RadioButton) findViewById(R.id.rb2);
    rb3 = (RadioButton) findViewById(R.id.rb3);

    rb1.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            rb1.setChecked(true);
            rb2.setChecked(false);
            rb3.setChecked(false);
        }
    });

    rb2.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            rb1.setChecked(false);
            rb2.setChecked(true);
            rb3.setChecked(false);
        }
    });

    rb3.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            rb1.setChecked(false);
            rb2.setChecked(false);
            rb3.setChecked(true);
        }
    });
}
于 2013-09-10T10:35:55.137 回答