单选按钮在动态创建的单选组中无法正确选择/取消选择。

4
当我在XML布局文件中创建RadioGroup时,一切正常,但是当我动态创建它时,当选择其他单选按钮时,单选按钮不会取消选择:

enter image description here

这里是代码:
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);

    RadioButton radioButtonView = new RadioButton(this);
    radioButtonView.setText("RadioButton");
    radioGroup.addView(radioButtonView);

    RadioButton radioButtonView2 = new RadioButton(this);
    radioButtonView2.setText("RadioButton2");
    radioGroup.addView(radioButtonView2);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
}

以下是布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<RadioGroup
    android:id="@+id/radioGroup1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" >
</RadioGroup>
</RelativeLayout>
2个回答

8

您需要为单选按钮设置某种类型的ID,如下所示:

int idRadio = <some number>;
radioButtonView.setId(idRadio++);
radioButtonView2.setId(idRadio++);

一旦它们拥有不同的ID,它应该可以正常工作。只需确保这些ID不会与任何现有图形元素冲突,并且不为零(请前往您的“gen”文件夹并查看R.java以获取其他元素ID)。


对于操作系统来说,跟踪资产及其所有者是很有用的。此外,当您需要确定用户选择了哪个对象时,通常查询返回的ID比查找所有单选按钮并找出哪个被选中更容易。另外,如果这是您接受的答案,请通过单击答案旁边的复选标记将其标记为已接受的答案。 :-) - Stephen Wylie
有用,当然,但是它是UI正常运行的先决条件吗?不管怎么说,感谢修复。 - Jonathan

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接