使用RadioButtons从字符串数组填充RadioGroup

时间:2017-11-04 19:42:13

标签: java android radio-button radio-group

我的布局包含空RadioGroup。 (我认为这是问题和其他问题的区别 - 我的布局中已经有空的RadioGroup在正确的位置)

我想使用我在RadioGroup中定义的item中的string-array填充此strings.xml

strings.xml中的数组如下所示:

<string-array name="currency_symbols">
    <item>$ - Dollar</item>
    <item>€ - Euro</item>
    <item>£ - Pound</item>
    <item>¥ - Yen</item>
    <item># - Other</item>
</string-array>

然后我尝试创建一个RadioButton并将其添加到RagioGroup,其中包括以下内容:

RadioGroup currencySettingRadioGroup = (RadioGroup) settings_dialog.findViewById(R.id.rg_currency_symbol);
currencySettingRadioGroup.removeAllViews();

RadioButton rb = new RadioButton(this);
String[] currency_symbols_options_array = getResources().getStringArray(R.array.currency_symbols);
for ( String this_currency_option: currency_symbols_options_array ) {
    rb.setText(this_currency_option);
    currencySettingRadioGroup.addView(rb);
}

添加了currencySettingRadioGroup.removeAllViews();,因为我收到了以下错误,但没有区别:

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

显然导致问题的一行是currencySettingRadioGroup.addView(rb);行...

我该如何正确地做到这一点?

(我看过Create RadioButton Dynamically with String Array和引用的http://android.okhelp.cz/create-radiobutton-radiogroup-dynamically-android-sample/,但似乎无法正常工作)

1 个答案:

答案 0 :(得分:0)

根据Barns52的评论,每次在RadioButton - 循环周围创建一个新的for(而不是在for - 循环开始之前只创建一次)解决了这个问题。

工作代码如下:

RadioGroup currencySettingRadioGroup = (RadioGroup) settings_dialog.findViewById(R.id.rg_currency_symbol);

String[] currency_symbols_options_array = getResources().getStringArray(R.array.currency_symbols);
for ( String this_currency_option: currency_symbols_options_array ) {
    RadioButton rb = new RadioButton(this);
    rb.setText(this_currency_option);
    currencySettingRadioGroup.addView(rb);
}