[Android Studio] onClickプロパティとsetOnClickListnerの違い

どうも、tatsuです!

今日は、onClickプロパティとsetOnClickListnerの違いを説明します。

※この記事で使用しているAndroid Studioのバージョンは2.3.3です。

onClickプロパティとsetOnClickListnerの違い

ウィジェットにクリックイベントを付けるとき、以下の2つの方法があります。

onClickプロパティでクリックイベントを付ける

activity_main.xml

activity_main.xmlは以下のようにします。

    <!-- onClick属性で指定した名称のメソッドをMainActivityに実装する -->
    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Click Me!"
        android:onClick="clickMethod"/>

MainActivity.java

MainActivity.javaは以下のようにします。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // ボタンクリック時のイベント処理
    public void clickMethod(View view) {
        Toast toast = Toast.makeText(MainActivity.this, "テスト", Toast.LENGTH_LONG);
        toast.show();
    }
    
}

setOnClickListnerでクリックイベントを付ける

activity_main.xml

activity_main.xmlは以下のようにします。

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Click Me!"/>

MainActivity.java

MainActivity.javaは以下のようにします。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // ボタンクリック時のイベント処理
        Button clickButton = (Button) findViewById(R.id.button);
        clickButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast toast = Toast.makeText(MainActivity.this, "テスト", Toast.LENGTH_LONG);
                toast.show();
            }
        });
    }

}

何が違うか

両者とも同じ動きをし、onClickプロパティで指定したほうがシンプルに記述できます。
ただし、clickイベントはよく使われることからonClickプロパティが用意されているのであり、click意外のイベント処理の場合はイベントリスナーを使用します。
なので、clickではonClickプロパティを使用してもよいのですが、イベントリスナーの記述方式に慣れておくためにもイベントリスナーを使用することをオススメします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です