【问题标题】:Android RadioGroup checks more than one RadioButton?Android RadioGroup 检查多个 RadioButton?
【发布时间】:2012-01-06 02:14:41
【问题描述】:

我正在使用RadioGroup,将RadioButton rdbut 添加到RadioGroup rdgrp,例如rdgrp.addView(rdbut)

   for(int j=0;j<3;j++)
   {
         RadioGroup rdgrp = new RadioGroup;
         for(int i=0;i<=10;i++)
         {
             RadioButton rdbut = new RadioButton(this);
             rdbut.setText("RadioButtion"+i);
             rdbut.setId(i);
             rdbut.setTag("somename");
             rdgrp.addView(rdbut);
         }
    }    

上面的代码显示了我如何初始化单选组和单选按钮。在 emulator/mobile 中运行此代码后,我可以一次检查 2 个单选按钮。

可能是什么问题?

【问题讨论】:

  • 您正在创建 3 组,每组 11 个单选按钮(可以吗?),现在应该出现所有单选按钮,您可以在其中一次选择 3 个单选按钮(每组一个单选按钮)。
  • 如何将rdgrp 添加到父视图中。并且RadioGroup 的构造函数也很奇怪(复制粘贴时似乎拼写错误)。
  • 在每个配给组中,我都可以选择两个单选按钮。这意味着 6 个单选按钮,但每个单选组不能超过两个。
  • @Raju 我认为您的目标是在单选组中添加单选按钮并使用仅选择一个单选按钮可以由用户从一组单选按钮中选择对吗?

标签: android radio-button radio-group


【解决方案1】:

在用户布局文件中使用类似这种 xml 设计的东西。

   <TableLayout
            android:id="@+id/tbl_layoutchoice"
            style="@style/InfoTableView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dip" >

            <RadioGroup
                android:id="@+id/SelectLayout_Group"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >
            </RadioGroup>
 </TableLayout>

和 For 在 Activity 的 OnCreate() 方法中使用这个 RadioGroup 和这样的 findView

 mRadioGroup = (RadioGroup) this.findViewById(R.id.SelectLayout_Group);

然后使用下面的代码与您的需求更改在一个 RadioGroup 中添加单选按钮。也使用下面的需求声明以动态创建单选按钮。

     ArrayList<String> layoutlist = new ArrayList<String>(3);
     int index = -1;
     LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT,
        LayoutParams.WRAP_CONTENT);


   for (String layout : layoutlist) {
        RadioButton r = new RadioButton(this);
        index++;
        r.setText(layout);
        r.setId(index);
        r.setLayoutParams(lp);
        r.setTextAppearance(this, R.style.TextBase);


        mRadioGroup.addView(r);


    }

所以不要忘记在 for 循环之前在 layoutlist 中添加您的字符串值。而 R.style 是 RadioButton 中文本显示的一些要求样式。

【讨论】:

    【解决方案2】:

    您创建了三个不同的电台组您只能从单个组中选择一个单选按钮。因此,您可以从三个组中选择三个按钮但是没有组间关系。您可以同时从不同组中选择单选按钮。在您的情况下,您最多可以选择三个按钮。

    谢谢 苏尼尔

    【讨论】:

      【解决方案3】:

      像这样更改您的代码。

        RadioGroup rdgrp[] = new RadioGroup[3];
      
        For(int j=0;j<3;j++)
         {
               RadioButton rdbut[] = new RadioButton[10];
               For(int i=0;i<=10;i++)
               {
      
                   rdbut[i].setText("RadioButtion"+i);
                   rdbut[i].setId(j*100+i);
                   rdbut[i].setTag("somename");
                   rdgrp[j].addView(rdbut[i]);
               }
          } 
      

      【讨论】:

      • rdbut[] 是一个 RadioButton 数组,您不能在任何地方使用 RadioButton 实例对其进行初始化。您可以对其进行编辑。
      • @Ramesh Akula 你能告诉我问题陈述中提到的上述方法有什么问题吗?我不明白第一种方式出了什么问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 2014-09-24
      • 2011-10-29
      相关资源
      最近更新 更多