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に属します。これにより、グループ内の1つのラジオボタンを一度にチェックできるようになります。また、RadioGroupは必要ありません。このコードは、ラジオボタンを好きなように配置するためのコントロールを提供します。

于 2012-08-27T05:57:54.833 に答える
1

RadioButtonを手動でチェックおよびチェック解除する代わりに、RadioGroupを使用します。

ラジオグループに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 に答える