如何将单选按钮添加到单选组

Χρη*_*σαν 5 android radio-button

我有一个TableLayout,并且在每一行的第三列中要放置一个单选组。我像这样构建RadioButtons:

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

for (int k = 0; k < size; k++) {
    rb[k] = new RadioButton(context);
    rg.addView(rb[k]);
}
Run Code Online (Sandbox Code Playgroud)

但这会导致我的应用崩溃,有什么想法吗?

Sam*_*Sam 6

您正在构建长度为的原始数组megethos,但是循环使用length size。如果megethossize是不同的值,则可能导致许多不同类型的错误...但是所有这些都是多余的,因为RadioGroup会为您保持此数组为最新。

我会尝试这样的事情:

RadioGroup group = (RadioGroup) findViewById(R.id.radioGroup1);
RadioButton button;
for(int i = 0; i < 3; i++) {
    button = new RadioButton(this);
    button.setText("Button " + i);
    group.addView(button);
}
Run Code Online (Sandbox Code Playgroud)

当您要引用位于的按钮时index

group.getChildAt(index);
Run Code Online (Sandbox Code Playgroud)

另外,请务必发布您的logcat错误,它会告诉我们确切的错误和查找的位置。否则,我们必须这样猜测。

更新资料

该错误是因为您试图将同一按钮添加到两个不同的布局中:

tr[k].addView(rb[k]);
rg.addView(rb[k]);
Run Code Online (Sandbox Code Playgroud)

一个视图只能有一个父级。据我所知,如果不先进行大量自定义,就无法将RadioGroup分解为多个视图。但是,ListView已经具有内置功能setChoiceMode(),其行为类似于RadioGroup:

List<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, list);
ListView listView = (ListView) findViewById(R.id.list);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

您可以轻松调整simple_list_item_checked以显示SSID和信号强度。希望能有所帮助。(如果您等待了足够长的时间,imran khan可能会用图形更改剪切并粘贴我的答案,然后再次声明为自己的答案。)