[Android] Button:ボタンのクリックイベントを処理する

ボタンはクリックされるとイベントが実行され、アプリはそのイベントを受け取り処理を定義することができます。ここではボタンのクリックイベントを処理する方法について説明します。
広 告
目次
前提条件
動作確認端末
- Google Nexus 5 – 5.0.0 – API21(エミュレータ)
1. onClick属性でクリックイベントを処理する
ボタンのクリックイベントを受け取るためには、<Button>
タグのandroid:onClick属性を使います。この属性の値は、クリック時に呼ばれるJavaメソッド名になります。このボタンを持つレイアウトを読み込んだActivity
は、ここで定義したメソッドを実装しなければなりません。
以下がサンプルコードになります。まずはレイアウトXML側の定義内容です。
res/layout/activity_main.xml
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <Button android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" /> </RelativeLayout>
次にJava側の実装内容です。android:onClick属性で定義したメソッドを宣言します。
java/<package name>/MainActivity.java
public class MainActivity extends Activity { ... /** ボタンをクリックした時に呼ばれる */ public void sendMessage(View view) { // ここに処理を記述 } ... }
Activity側で実装するメソッドは以下の条件でなければなりません。
- publicメソッド
- 戻り値はvoid
- 引数はViewオブジェクト1つ
Note : もしonClick属性
で定義したメソッド名をActivityで実装しなかった場合、画面のボタンをクリックするとNoSuchMethodExceptionの例外が発生します。
2. OnClickListenerでクリックイベントを処理する
JavaでView.OnClickListenerを使用することで、ボタンに対してクリックイベントリスナーを登録することができます。イベントリスナーとは、イベントが発生する動作するものです。イベントとは、今回のケースでは「ボタンをクリックする」を指します。この方式は、Fragmentでクリックイベントを処理する必要がある場合など必要になることがあります。
View.OnClickListenerのオブジェクトを作成し、Button
オブジェクトに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 Button button = (Button) findViewById(R.id.button_send); button.setOnClickListener(new View.OnClickListener(){ /** ボタンをクリックした時に呼ばれる */ @Override public void onClick(View v) { // ここに処理を記述する } }); } }
setOnClickListener()
メソッドに渡している値は、匿名クラスと呼ばれるJavaの文法を用いています。