2011年1月5日水曜日

【android アプリ 開発】 Form Stuff 作成4 - RadioButton








■Form Stuff 作成4 - RadioButton

RadioButtonは複数の項目の中、1項目のみ選択する時、使用します。

1.次のようにEclipseから新しいプロジェクトを生成します。



2.res -> layout -> 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"
    >
<RadioGroup
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical">

  <RadioButton android:id="@+id/radio_red"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Red" />

  <RadioButton android:id="@+id/radio_blue"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Blue" />

</RadioGroup>
</LinearLayout>


上のXMLを見ると、RadioButton 二つが一つの RadioGroupに属することがわかります。
同一 RadioGroupに属するRadioButtonは一つのみ選択できます。


3.src -> my.HelloFormStuff4 -> HelloFormStuff4.java を変更します。


package my.HelloFormStuff4;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.RadioButton;
import android.widget.Toast;
public class HelloFormStuff4 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      
        final RadioButton radio_red = (RadioButton) findViewById(R.id.radio_red);
        final RadioButton radio_blue = (RadioButton) findViewById(R.id.radio_blue);
        radio_red.setOnClickListener(radio_listener);
        radio_blue.setOnClickListener(radio_listener);
    }
  
    OnClickListener radio_listener = new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            RadioButton rb = (RadioButton) v;
            Toast.makeText(HelloFormStuff4.this, rb.getText(), Toast.LENGTH_SHORT).show();
        }
    };
}


コードを見ると、

radio_red.setOnClickListener(radio_listener);
radio_blue.setOnClickListener(radio_listener);

上のコードではラジオボタンがクリックされる時にradio_listenerを使用しています。



Toast.makeText(HelloFormStuff4.this, rb.getText(), Toast.LENGTH_SHORT).show();

上のコードではメッセージを出力する時にrb.getText() を使用してmain.xmlに定義されているラジオボタンのtext 値を出力しています。

次は実行結果です。


Red ラジオボタンをクリックすると、下にRed 文字が出力されます。
Blue ラジオボタンをクリックすると、下に Blue 文字が出力されます。


次は 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">
<RadioGroup
  android:layout_width="fill_parent" android:layout_height="wrap_content"
  android:orientation="horizontal">

  <RadioButton android:id="@+id/radio_red" android:layout_width="wrap_content"
      android:layout_height="wrap_content" android:text="" />

  <RadioButton android:id="@+id/radio_blue" android:layout_width="wrap_content"
      android:layout_height="wrap_content" android:text="" />

</RadioGroup>
</LinearLayout>


太字の部分を見ると、android:orientation="horizontal" に変更して、ラジオボタンのtextをandroid:text="男" ,android:text="女" に変更したのがわかります。

実行結果です。


Blog Archive