View.OnClickListenerインターフェイス

android.viewView.OnClickListenerインターフェイス

View.OnClickListenerとは?

 状態:-  閲覧数:1,994  投稿日:2013-04-22  更新日:2014-03-08  
ボタンのクリックイベントに対応するリスナー
・ビューのクリック処理に利用される
・クリック時に呼び出される「onClick」メソッドのみ定義されている
・引数にはクリックが発生したViewクラスのオブジェクトが渡されてくる

使い方
・「OnClickListenerインターフェイスを実装したクラス」を、クリックイベントのリスナー(オブジェクト)として登録すれば、ボタンがクリックされた際、onClickメソッドが呼び出される
※ボタンのクリックイベントを検知するためには、ボタンオブジェクトへリスナーを登録する

クラス構成

 閲覧数:420 投稿日:2014-02-27 更新日:2014-02-27 

親クラス



java.lang.Object
  ↳ android.view.View.OnClickListener


子クラス


CharacterPickerDialog, KeyboardView, QuickContactBadge


コード例

 閲覧数:383 投稿日:2014-03-08 更新日:2014-03-10 

例1


ボタンのイベント処理1
・自分自身に対してandroid.view.View.OnClickListenerインターフェースをインプリメントして、クラス内で「onClick」メソッドを定義

処理の流れ
1.必要パッケージをインポート
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

2.「OnClickListenerインターフェイスを実装したクラス」を作成
public class HelloAndroid2Activity extends Activity implements OnClickListener {
・implementsしないと、クリックイベントがButttonに渡されない
・理由は、クリックリスナーへ登録する際(=setOnClickListenerメソッドを実行する際)、引数で渡せるのはView.OnClickListener「として扱えるインスタンス」のみだから

3.ボタンオブジェクトの取得
Button bt = (Button)findViewById(R.id.button1);

4.クリックリスナーの登録
ボタンオブジェクトへ対して、「OnClickListenerインターフェイスを実装したクラス(HelloAndroid2Activity)」を登録
bt.setOnClickListener(this);
・引数で、インターフェースを実装したクラスのオブジェクトを指定。「OnClickListener」インターフェースを実装している場合には「this」で指定

5.抽象メソッド実行
  ボタンをクリックすると、まず最初に、「View.OnClickListenerインターフェイス」のonClick抽象メソッドが呼ばれる

6.実装メソッド実行
  次いで、実装したメソッドが呼ばれる
public void onClick(View view) {

▼ /HelloAndroid2/src/android/style/HelloAndroid2Activity.java
package android.style;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class HelloAndroid2Activity extends Activity implements OnClickListener {
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       // ボタンオブジェクトの取得
       Button bt = (Button)findViewById(R.id.button1);
       // クリックリスナーの登録
       bt.setOnClickListener(this);
   }

   // ボタンクリック時に呼ばれるメソッド
   public void onClick(View view) {
       TextView tview = (TextView)findViewById(R.id.textView1);
       tview.setText("ボタンが押されました");
   }
}


・xml … レイアウト
▼/HelloAndroid2/res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >


   <Button
       android:id="@+id/button1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/button_str1" />

   <TextView
       android:id="@+id/textView1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Large Text"
       android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>



例2


ボタンのイベント処理
・無名クラス利用
▼/HelloAndroid3/src/android/style/HelloAndroid3Activity.java
package android.style;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class HelloAndroid3Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// ボタンオブジェクトの取得
Button bt = (Button) findViewById(R.id.button1);

// クリックリスナーの登録
bt.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
TextView tview = (TextView)findViewById(R.id.textView1);
tview.setText("ボタンが押されました");
}
});
}
}


・xml … レイアウト
▼/HelloAndroid3/res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_str1" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>



イベントリスナー実装方法

コメント投稿(ログインが必要)