【问题标题】:Android -get radio button id based on valueAndroid - 根据值获取单选按钮 id
【发布时间】:2016-06-16 06:25:42
【问题描述】:

当用户在检查单选按钮后单击按钮时,我想突出显示正确和错误选项。如果该选项正确,请突出显示。否则突出显示正确的选项。

有没有办法根据其值获取组中的单选按钮 ID?或者我需要使用switch case吗?

我搜索得够多,但找不到我需要的东西。

编辑

我有一个简单的布局,其中包含一个问题、4 个选择、一个按钮。用户选中一个单选按钮并单击选中按钮。如果用户选择了错误的选项,请突出显示正确的选项。我知道什么是正确的价值选择。

choice1、choice2、choice3、choice4 是四个单选按钮。用户检查choice3。但是choice2是正确的。如何在此单选组中按值选择choice2。

  group.getRadioButtonId("choice2")

有什么类似的吗?

【问题讨论】:

  • 分享你的代码你做了什么
  • @anonymous 我不认为这个问题需要代码。这不是解决错误的问题。
  • 请详细说明这句话有没有办法根据其值获取组中的单选按钮ID?举个例子..
  • @jankigadhiya 详细说明。如果有任何疑问。我会再次澄清。
  • 问题是你不知道你的 4 单选按钮的值为“choice2”(根据你的例子是正确的)..如果我错了,请纠正我..!!

标签: android


【解决方案1】:

您可以遍历 RadioGroup 的子代以获取所需的:

int count = radioGroup.getChildCount();
for (int i = 0 ; i < count; i++) {
    RadioButton button = (RadioButton) radioGroup.getChildAt(i);
    if (button.getText().equals("choice2")) {
        int id = button.getId(); // the ID you're looking for
    }
}

【讨论】:

    【解决方案2】:

    你可以这样检查

    @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
    
                int rbId = group.getCheckedRadioButtonId();
                RadioButton rb = (RadioButton) findViewById(rbId);
                switch (group.getId()) {
                case R.id.radiogroupID:
    
                    if (rb.getText().toString().equalsIgnoreCase("right")) {
                        // your logic 
                    } else {
                        //your logic
                    }
                }
            }
    

    【讨论】:

    • 我已经提到过除了开关盒。我正在寻找替代方案。如果没有其他选择,我会使用 switch case 方法
    【解决方案3】:

    您可以使用这些行。它对我有用

     int checkedId = radioGroup.getCheckedRadioButtonId();
        View radioButton = radioGroup.findViewById(checkedId);
        int radioId = radioGroup.indexOfChild(radioButton);
        RadioButton btn = (RadioButton) radioGroup.getChildAt(radioId);
    

    【讨论】:

      【解决方案4】:

      首先检查哪个选项为真。听到选项 2 确定。默认设置为检查 true ,然后检查用户检查值。如果用户选择显示消息以外的其他选项并传递 true 选项,我们已经检查了 true

      【讨论】:

        【解决方案5】:

        使用单选按钮的所有 id 创建一个 int 数组

        int[] rb_IDs=new int[]{R.id.rb1,R.id.rb2,R.id.rb3};
        

        然后在你的按钮内点击:

        RadioGroup rg=(RadioGroup) findViewById(R.id.rg);
            rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    for (int i=0;i<rb_IDs.length;i++)
                    {
                        RadioButton rb=(RadioButton)findViewById(rb_IDs[i]);
                        if (rb.getText().toString().equals("YOUR CORRECT ANSWER")&&!rb.isChecked())
                        {
                            //
                            //Do your thing
                            //
        
                            //ID of the correct answer Radiobutton is
                            int id=rb_IDs[i];
        
                            //HighLighting the answer
                            rb.setBackgroundColor(Color.parseColor("#00ff00"));
        
                            break;
                        }
                    }
                }
            });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-09-09
          • 2012-06-27
          • 1970-01-01
          • 2023-04-03
          • 2011-03-14
          • 2012-06-14
          • 2018-06-03
          相关资源
          最近更新 更多