コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

Androidアプリ入門 No.18 RadioButtonのActivityからの操作

今風に書き直した記事がありますので、合わせて参照ください。
blog.webarata3.link

RadioButton

Activityからの操作

Activityからの操作でも取り立てて難しい部分はない。まず、main.xmlを以下に示す。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    >
    <RadioGroup
        android:id="@+id/radioGroup"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
        <RadioButton
            android:id="@+id/redRadioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000"
            android:textSize="16sp"
            android:text="赤"
            />
        <RadioButton
            android:id="@+id/greenRadioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000"
            android:textSize="16sp"
            android:text="緑"
            />
        <RadioButton
            android:id="@+id/blueRadioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000"
            android:textSize="16sp"
            android:text="青"
            />
    </RadioGroup>
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000"
        android:textSize="16sp"
        android:text="ここの文字の色が変わります。"
        />
</LinearLayout>

次に、MainActivity.javaを示す。RadioButtonの値が変わったイベントはRadioGroupのOnCheckedChangeListenerですべて受け取れるため、個々のRadioButtonでの設定は必要ない。また、イベント内でRadioButtonのidを取得できる。

package sample.at;

import java.util.HashMap;
import java.util.Map;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final Map<Integer, Integer> colorMap = new HashMap<Integer, Integer>();
        colorMap.put(R.id.redRadioButton, Color.RED);
        colorMap.put(R.id.greenRadioButton, Color.GREEN);
        colorMap.put(R.id.blueRadioButton, Color.BLUE);

        final TextView textView = (TextView) findViewById(R.id.textView);

        RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
        radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup arg0, int checkedId) {
                textView.setTextColor(colorMap.get(checkedId));
            }
        });
    }
}

実行結果は以下。