ラジオボタン

■準備

事前準備として以下の手順を実行して下さい。

①.プロジェクト作成
	新規プロジェクト「RadioButtonTest」をEmptyActivityで作成します。

②.HelloWorld削除
	作成後はProjectウィンドウのres/layout/activity_main.xmlを
	クリックしてXMLを表示してHello WorldのTextViewタグを削除します。

■ラジオグループ追加

ラジオグループはラジオボタンを管理するための部品で、
このグループにラジオボタンを追加することで、
グループ内のラジオボタンの切り替えやどのボタンが選ばれてるかを
取得することができます。

●ラジオグループの追加
	ラジオグループはPaletteのContainersの「RadioGroup」で追加できます。
	ラジオグループは全面に反映されるので、範囲を指定したい場合は
	RadioGroupプロパティのlayout:width(幅)とlayout:height(高さ)で範囲を変更できます。

	mb_0066

■ラジオボタン追加

ラジオグループを追加したらグループ内にラジオボタンを追加します。

	ラジオボタン:
		複数の選択肢の中から1つだけ選択する際に使用する
		複数のラジオボタンを1つのグループとして考え、その中から選択して
		その内容を使用して処理を作成する

●ラジオボタンの追加
	ラジオボタンはPaletteのWidgetsの「RadioButton」で追加できます。
	追加するボタンはラジオグループの中に追加して下さい。
	RadioButtonプロパティで以下の情報を変更できます。
			
		texSize => textのサイズ変更
		text => テキストの内容
		textColor => テキストの色
	
		mb_0067

■ラジオボタンのコーディング方法

●使用クラス
	ラジオボタンのコーディングには以下のクラスを使用します。

	・RadioButton
		ラジオボタンクラス
		import => android.widget.RadioButton

	・RadioGroup
		ラジオグループクラス
		import => android.widget.RadioGroup

	・OnCheckedChangeListener
		ラジオボタンの切り替えた瞬間を取得するために
		必要なインターフェースクラス
		import => android.widget.RadioGroup

●RadioGroupの使い方
	RadioGroupクラスでよく使用される関数は以下のようなものがあります。

	・check
		戻り値:
			なし
	
		引数:
			int id:
				ラジオボタンリソースID
		
		内容:
			引数で指定したIDのラジオボタンを選択状態にする
		
		例:
			RadioGroup group = findViewById(ラジオグループリソースID);

			group.check(ラジオボタンリソースID);

	・getCheckRadioButtonId
		戻り値:
			int:
				選択中 => ラジオボタンのリソースID
				非選択 => -1
			
		引数:
			なし
		
		内容:
			選択中のラジオボタンのリソースIDを取得する
			
		例:
			RadioGroup group = findViewById(ラジオグループリソースID);

			// 選択中ラジオボタンリソースID取得
			int button_id = group.getCheckRadioButtonId();

			if (button_id != -1)
			{
				RadioButton button = (RadioButton)findViewById(button_id);
				// ラジオボタンのテキストを取得
				String text = button.getText().toString();
				Log.d("RadioButtonText", text);
			}

	・clearCheck
		戻り値:
			なし
	
		引数:
			なし
			
		内容:
			現在の選択中のラジオボタンを解除して非選択状態にする
			
		例:
			RadioGroup group = (RadioGroup)findViewById(ラジオグループリソースID);
			// 選択解除
			group.clearCheck();

●OnCheckedChangeListenerの使い方
	OnCheckedChangeListenerにはonCheckedChangedオーバーロード関数が用意されており、
	この関数はラジオボタンが切り替わった瞬間に呼び出されます。
	OnCheckedChangeListenerは切り替わった瞬間を知りたいと考える
	ラジオグループに登録する必要があり、
	登録を行わないと切り替わったことに対する通知はきません。
	登録はRadioGroupクラスにsetOnCheckedChangeListener関数が用意されているので、
	そちらを使用して登録を行います。

	・onCheckedChanged
		戻り値:
			なし
	
		引数:
			RadioGroup group:
				ラジオボタンが切り替わったグループ

			int checkedId:
				切り替え後のID(非選択は-1)
			
		内容:
			ラジオボタンが切り替わった際に呼び出される。
			切り替わったグループと切り替え後のラジオボタンのリソースIDは
			引数で渡される

	・setOnCheckedChangeListener
		戻り値:
			なし
		
		引数:
			OnCheckedChangeListener:
				切り替わりの通知を受け取るOnCheckedChangeListenerインスタンス
			
		内容:
			ラジオグループにOnCheckedChangeListenerインスタンスの登録を行う

	・RadioGroupへのOnCheckedChangeListenerの登録方法
		OnCheckedChangeListenerを使用するにはOnCheckedChangeListenerを
		継承無名クラスをインスタンス化してRadioGroupへ登録する必要があります。

		・継承
			継承は専用のクラスを用意するかラジオグループを追加している
			アクティビティに対して行います。
			以下はアクティビティに対して継承をした場合の例です。

			public class MainActivity extends AppCompatActivity 
						implements RadioGroup.OnCheckedChangeListener 
			{
				protected void onCreate(Bundle savedInstanceState)
				{
					super.onCreate(savedInstanceState);
					setContentView(R.layout.activity_main);
					RadioGroup group = findViewById(ラジオグループリソースID);
					// ラジオグループにOnCheckedChangeListenerを登録
					group.setOnCheckedChangeListener(this);
				}

				@Override
				public void onCheckedChanged(RadioGroup group, int checkedId)
				{
				}
			}

		・無名クラス
			無名クラスを用意してOnCheckedChangeListenerをインスタンス化し、
			setOnCheckedChangeListenerに設定します。

			// 無名クラスの作成
			OnClickListener listener = new OnCheckedChangeListener() {
								@Override
								public void onCheckedChanged(
										RadioGroup group, 
										int checkedId
										)
								{
			    					}
							};
	
			RadioGroup group = findViewById(ラジオグループリソースID);
			// ラジオグループにOnCheckedChangeListenerインスタンスを登録
			group.setOnCheckedChangeListener(listener);

■サンプル

※切り替えを分かりやすくするためにTextViewを画面に追加していますので追加をお願いします。

// アクティビティにOnCheckedChangeListenerを継承
public class MainActivity extends AppCompatActivity 
				implements RadioGroup.OnCheckedChangeListener {
	private TextView m_Text;

	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
			m_Text = (TextView)findViewById(R.id.textView);
			// グループの取得
			RadioGroup group = (RadioGroup)findViewById(R.id.radioGroup);
			// リスナーの設定
			group.setOnCheckedChangeListener(this);
		}

		@Override
		public void onCheckedChanged(RadioGroup group, int checkedId)
		{
			RadioButton button = (RadioButton)findViewById(checkedId);

			// ボタンリソースIDを取得
			switch (button.getId())
			{
			case R.id.radioButton:
				m_Text.setText("ボタン1");
				break;
			case R.id.radioButton2:
				m_Text.setText("ボタン2");
				break;
			case R.id.radioButton3:
				m_Text.setText("ボタン3");
				break;
			}
		}
	}