「メソッドを呼び出す際」引数としてコールバックメソッドへの参照情報を渡す

Android用語集

カテゴリー: Java  閲覧数:608 配信日:2013-05-18 09:48


概要


それぞれのインターフェイスに対しコールバックメソッドはひとつだけ
イベントリスナのコールバックメソッドは何故一つ?

コールバックメソッドのひとつを宣言しイベントをハンドリングする方法は大きく2種類
・アクティビティにインターフェイスをネストさせ実装
・匿名クラスとして定義

View.set...Listener() メソッドにインターフェイスの実装を渡す
・それぞれの View.set...Listener() メソッドにインターフェイスの実装を渡す (例えば、 setOnClickListener()
を呼び出しそれに OnClickListenerの実装を渡す)


例1


リスナクラスを定義
// クリックリスナーの登録
       bt.setOnClickListener(new ShowClickButton());
   }

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



例2


既存のクラスにインターフェイスを実装
「OnClickListener 」引数に this を指定
・ここでのthisは「OnClickListenerインターフェイスを実装したユーザ作成クラス」の意味
public class HelloAndroid4 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);
   }



例3


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



例4


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