0

我有一组 9 个收音机Buttons(一组 3 个),用户必须选择 3 个(每组 1 个)

在正确的选择上得分增加,而在错误的选择上得分减少,但问题是如果选择了所有 3 个正确的答案,则得分是正确的,否则它不会响应重新选择该组的另一个单选按钮。提交按钮 我已经编写了代码,我是开发新手,请指导

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

switch (buttonView.getId()) {

    case R.id.qa:cb.setChecked(false);
        cc.setChecked(false);
        cd.setChecked(false);
        s[0] = false;
        break;
    case R.id.qb:
        ca.setChecked(false);
        cc.setChecked(false);
        cd.setChecked(false);
        s[0] = false;
        break;
    case R.id.qc:
        cb.setChecked(false);
        ca.setChecked(false);
        cd.setChecked(false);
        s[0] = true;

        break;
    }
public void onClick(View v) {

            score = 0;
    for (int i = 0; i < 3; i++) {
        if (s[i] == true)
            score++;
        else
            score--;
}

其中 s 是boolean s[] = new boolean[];

我是开发新手,所以无法解决问题

4

2 回答 2

3

下面的代码示例会将单选按钮动态添加到组中,以便您可以使用任何布局以您喜欢的任何方式排列按钮。

布局:main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:weightSum="1" >

    <RadioButton
        android:id="@+id/rbtn1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".5"
        android:text="A" />

    <RadioButton
        android:id="@+id/rbtn2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".5"
        android:text="B" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:weightSum="1" >

    <RadioButton
        android:id="@+id/rbtn3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".5"
        android:text="C" />

    <RadioButton
        android:id="@+id/rbtn4"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".5"
        android:text="D" />
</LinearLayout>

</LinearLayout>

代码:MainActivity.xml

public class MainActivity extends Activity {

private static final String GROUP_A = "GroupA";
private static final String GROUP_B = "GroupB";
private List<RadioButton> radioButtons;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    RadioButton rbtn1 = (RadioButton) findViewById(R.id.rbtn1);
    RadioButton rbtn2 = (RadioButton) findViewById(R.id.rbtn2);
    RadioButton rbtn3 = (RadioButton) findViewById(R.id.rbtn3);
    RadioButton rbtn4 = (RadioButton) findViewById(R.id.rbtn4);

    addRadioButtonToGroup(rbtn1, GROUP_A);
    addRadioButtonToGroup(rbtn2, GROUP_A);
    addRadioButtonToGroup(rbtn3, GROUP_A);
    addRadioButtonToGroup(rbtn4, GROUP_B);
}

private void addRadioButtonToGroup(RadioButton rbtn, String group) {
    rbtn.setTag(group);

    if (radioButtons == null) {
        radioButtons = new ArrayList<RadioButton>();
    }

    radioButtons.add(rbtn);

    rbtn.setOnCheckedChangeListener(new RadioButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (isChecked) {
                for (int i = 0; i < radioButtons.size(); i++) {
                    RadioButton radioButton = radioButtons.get(i);
                    if (radioButton
                            .getTag()
                            .toString()
                            .equalsIgnoreCase(
                                    buttonView.getTag().toString())) {
                        if (!radioButton.equals(buttonView)) {
                            radioButton.setChecked(false);
                        }
                    }
                }
            }
        }
    });
}

}

这里..前 3 个单选按钮将属于 A 组,其他单选按钮属于 B 组,这确保可以一次检查组中的一个单选按钮。我们也不需要 RadioGroup,并且此代码可以控制以您喜欢的方式排列单选按钮。

于 2012-08-27T05:57:54.833 回答
1

使用 RadioGroup 而不是手动检查和取消检查 RadioButtons。

如果您将 3 个单选按钮放在一个单选组中,您将能够一次检查一个单选按钮,RadioGroup 将对其进行管理。

检查下面的示例:在提交按钮上单击它将计算分数。

布局:main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="First Question" />

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

        <RadioButton
            android:id="@+id/rbtn1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="A" />

        <RadioButton
            android:id="@+id/rbtn2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="B" />

        <RadioButton
            android:id="@+id/rbtn3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="C" />
    </RadioGroup>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Second Question" />

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

        <RadioButton
            android:id="@+id/rbtn4"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="P" />

        <RadioButton
            android:id="@+id/rbtn5"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Q" />

        <RadioButton
            android:id="@+id/rbtn6"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="R" />
    </RadioGroup>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Third Question" />

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

        <RadioButton
            android:id="@+id/rbtn7"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="X" />

        <RadioButton
            android:id="@+id/rbtn8"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Y" />

        <RadioButton
            android:id="@+id/rbtn9"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Z" />
    </RadioGroup>

    <Button
        android:id="@+id/btnSubmit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Submit" />
</LinearLayout>

</ScrollView>

活动 :

package com.example.demo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.Toast;

public class MainActivity extends Activity {

private RadioGroup rg1;
private RadioGroup rg2;
private RadioGroup rg3;

private OnClickListener btnClickListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        int answerCount = 0;
        if (rg1.getCheckedRadioButtonId() == R.id.rbtn1)
            answerCount++;
        if (rg2.getCheckedRadioButtonId() == R.id.rbtn5)
            answerCount++;
        if (rg3.getCheckedRadioButtonId() == R.id.rbtn9)
            answerCount++;
        Toast.makeText(MainActivity.this, String.valueOf(answerCount),
                Toast.LENGTH_SHORT).show();
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    rg1 = (RadioGroup) findViewById(R.id.rg1);
    rg2 = (RadioGroup) findViewById(R.id.rg2);
    rg3 = (RadioGroup) findViewById(R.id.rg3);

    Button btnSumbit = (Button) findViewById(R.id.btnSubmit);
    btnSumbit.setOnClickListener(btnClickListener);
}

}
于 2012-08-26T07:44:29.030 回答