Programming Style

メニュー

初心者がアプリ開発者になるためのプログラミング学習サイト

[Android] CheckBox:チェックボックスのクリックイベントを処理する

android_android-checkbox-click_1

チェックボックスはクリックされるとイベントが実行され、アプリはそのイベントを受け取り、処理を実行することができます。ここでは、チェックボックスのクリックイベントを処理する方法について説明します。

 

広 告

 

目次

前提条件

動作確認端末

  • Google Nexus 5 – 5.0.0 – API21(エミュレータ)

1. onClick属性でクリックイベントを処理する

チェックボックスのクリックイベントを受け取るためには、<CheckBox>タグのandroid:onClick属性を使います。この属性の値は、クリック時に呼ばれるJavaメソッド名になります。このチェックボックスを持つレイアウトを読み込んだActivityは、ここで定義したメソッドを実装しなければなりません。

サンプルコードを以下に示します。まずはレイアウトXML側の定義内容です。

 

res/layout/activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <CheckBox
        android:id="@+id/checkbox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/checkbox1"
        android:onClick="onCheckboxClicked"/>

    <CheckBox
        android:id="@+id/checkbox2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/checkbox2"
        android:onClick="onCheckboxClicked" />

</LinearLayout>

次にJava側の実装内容です。android:onClick属性で定義したメソッドを宣言します。

 

java/<package name>/MainActivity.java

public class MainActivity extends Activity {
    …
    public void onCheckboxClicked(View view) {
        final boolean checked = ((CheckBox) view).isChecked();
        switch(view.getId()) {
            case R.id.checkbox1:
                if (checked) {
                    // チェックボックス1がチェックされる
                } else {
                    // チェックボックス1のチェックが外される
                }
                break;
            case R.id.checkbox2:
                if (checked) {
                    // チェックボックス2がチェックされる
                } else {
                    // チェックボックス2のチェックが外される
                }
                break;
        }
    }
}

Activity側で実装するメソッドは以下の条件でなければなりません。

 

  • publicメソッド
  • 戻り値はvoid
  • 引数はViewオブジェクト1つ

引数にはクリックされたチェックボックスのインスタンスが渡されます。サンプルコードでは、チェックが付いたのか、外れたのか、をisChecked()メソッドを使って判定しています。

 

Note : もしonClick属性で定義したメソッド名をActivityで実装しなかった場合、画面のボタンをクリックするとNoSuchMethodExceptionの例外が発生します。

 

2. OnClickListenerでクリックイベントを処理する

JavaでView.OnClickListenerを使用することで、チェックボックスに対してクリックイベントリスナーを登録することができます。イベントリスナーとは、イベントが発生する動作するものです。イベントとは、今回のケースでは「ボタンをクリックする」を指します。この方式は、Fragmentでクリックイベントを処理する必要がある場合など必要になることがあります。

View.OnClickListenerのオブジェクトを作成し、CheckBoxオブジェクトにsetOnClickListener()メソッドで設定します。

以下がサンプルコードです。

 

java/<package name>/MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkbox1);
        checkBox1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                // 処理を記述
            }
        });
        final CheckBox checkBox2 = (CheckBox) findViewById(R.id.checkbox2);
        checkBox2.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                // 処理を記述
            }
        });
    }
}
Note : ここでsetOnClickListener()メソッドに渡している値は、匿名クラスと呼ばれるJavaの文法を用いています。

 

 

広 告