【问题标题】:All radio buttons are getting selected under a radio group, android所有单选按钮都在一个单选组下被选中,android
【发布时间】:2013-02-07 07:37:03
【问题描述】:

我对 android 很陌生,我有一个这样的 xml:

<RadioGroup
        android:id="@+id/cardRadioGroup"
        android:layout_width="wrap_content"
        android:layout_height="45dp" android:layout_alignParentLeft="true" android:layout_marginLeft="35dp"
        android:layout_alignTop="@+id/cardEditText">
</RadioGroup>

我很想使用我的代码来扩展这个 xml,以根据我的数据模型生成尽可能多的单选按钮。

我使用的代码是(在 for 循环中):

        LayoutInflater inflater = this.getLayoutInflater();
        View currentView = inflater.inflate(R.layout.card_payment_content_node,null);

        RadioGroup rg = (RadioGroup) currentView.findViewById(R.id.cardRadioGroup);
        RadioButton rb =  new RadioButton(this);
        //set radiobutton properties
        rb.setText(entry.getKey());
        rb.setId(++radioButtonIdCounter);

        rg.addView(rb);

        //add to view
        parent.addView(currentView);

这是按预期工作的。但问题是我可以在我的设备上一次选择许多单选按钮。

我不确定为什么会这样。我在哪里犯错了?

提前致谢。

【问题讨论】:

  • 您在哪里将新创建的单选按钮添加到单选组?
  • 我没有添加。我该如何添加这些? Android 不知道cardRadioButton 在名为cardRadioGroupRadioGroup 内?
  • @siriam 您希望如何能够在 XML 中动态添加 GUI 元素?需要特殊的循环标签才能为生成的对象提供单独的属性。可以使用 XSLT,但 Android 不会将 XSLT 应用于您的布局描述。您可以手动执行此操作,但如我在回答中所述,以编程方式添加按钮更有效。
  • 我已经更新了代码!

标签: java android


【解决方案1】:

您的所有按钮都具有相同的 ID。这就是他们行动如此一致的原因。

你只会膨胀一次布局。您必须通过识别 cardRadioGroup 以编程方式添加按钮,然后循环输入代码,为所有按钮生成唯一 ID。

要将单选按钮添加到组,请使用RadioGroup.addview()

要创建单选按钮,请使用RadioButton 的构造函数之一,并根据需要设置更多属性。

【讨论】:

  • @siriam 听起来您的 XML 中仍然有一个单选按钮,或者总是添加相同的按钮。你不能那样做。从 XML 中的 no 单选按钮开始,然后通过 RadioButton 构造函数创建所有这些。它们必须是单独的对象。
  • 我这样做了 RadioButton rb = new RadioButton(this) 并将其添加到我的 xml 中的单选按钮组中。但同样的问题是所有按钮都被选中!
  • @sriram 你需要为他们分配一个不同的 ID。我说那是根本问题,记得吗?
  • 是的,我通过rb.setId(++radioButtonIdCounter); 做到这一点,其中radioButtonIdCounter 是我在for循环期间递增的计数器!但这似乎并不能解决问题。
  • @sriram 您能否发布您更新的代码并告诉我。有几个潜在的问题可能会导致这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
  • 2020-03-27
  • 2023-02-03
  • 1970-01-01
  • 2017-07-19
相关资源
最近更新 更多