Android

Android ボタン(Button)とイベントリスナー 【Android TIPS】

Posted 9月 24 2012 by Teachers  , , with 0 コメント

Androidアプリの開発といえば、Javaを使ってプログラムするとイメージされる方が多いのではないでしょうか。

今まではあえて触れてきませんでしたが、今回からいよいよJavaでのプログラムを始めたいと思います。

申し訳ありませんが、本記事はJavaがある程度コーディングできる、もしくは理解できる方、

また、オブジェクト指向を勉強したことのある方を対象にしています。

Javaに関しては、本ブログの中で連載がありますので、そちらを参照ください。

 

今回はボタンとイベントリスナーです。

基本から押さえていくのがセオリーなのですが、それではクラスの説明ばかりになりつまらないと思いましたので、まずは動くものを作ってみたいと思います。

 

まずは、動くものをつくろう!

前回までの記事を参考に、HelloWorldプログラムにボタンを追加しておいてください。

WS000031

 

「src/com.example.helloworld/MainActivity.java」を以下のように書き換えます。

package com.example.helloworld;

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

public class MainActivity extends Activity implements OnClickListener{

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

        Button button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        Toast.makeText(this, R.string.hello_world, Toast.LENGTH_SHORT).show();
    }
}

 

コンパイルエラーが消えたら、実行してみましょう。

device-2012-09-24-150107device-2012-09-24-150008

 

ボタンをクリックすると、画面下部に「Nice to meet you!」と表示されるはずです。

このメッセージ通知機能のことをトーストといって、現在どのような画面が表示されているかにかかわらずメッセージを表示できるため、ユーザーへの情報通知に多様されます。

Androidユーザーの方であれば、よく目にする機会がありますよね。

 

 

どんな仕組みになっているのでしょうか?

「MainActivity.java」の書き換えた部分は3か所のみです(import文は除いて)

まずは、11行目から見てみましょう。

public class MainActivity extends Activity implements OnClickListener{

 

MainActivityクラスにOnClickListenerインタフェースを実装しています。

このインタフェースには抽象メソッド(オーバーライドしなくてはいけないメソッド)が1つだけ定義されていて、

実装したクラス(ここではMainActivity)にクリック時の処理が定義されていることを示す役割があります。

 

次に、28行目からの以下のコードを見てみましょう。

    @Override
    public void onClick(View v) {
        Toast.makeText(this, R.string.hello_world, Toast.LENGTH_SHORT).show();
    }

 

onClick()メソッドをオーバーライドしています。

OnClickListenerインタフェースで定義されていた抽象メソッドがこれです。

メソッドの中には、オブジェクトを「クリックしたときの処理」を記述するのですが、今回はToastクラスのmakeText()メソッドとshow()メソッドの呼び出しを行っています。

このmakeText()メソッドがToastオブジェクトを作るためのメソッド、show()メソッドがトーストを表示するためのメソッドになります。

 

最後に、18行目からの以下のコードです。

        Button button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(this);

 

18行目でButtonクラスの変数を作成しています。

Buttonクラスはその名の通り画面に配置したボタンを表すクラスで、このようにしてインスタンス化(オブジェクト化)を行います。

Buttonクラスはnewでインスタンス化することも可能ですが、findViewById()メソッドを用いる方がよく使われるようです。

このbuttonオブジェクトが「クリックするオブジェクト」(クリックしたときに反応するオブジェクト)になります。

 

19行目では作成したbuttonオブジェクトのsetOnClickListener()メソッドを呼び出しています。

引数にはthisを渡しています。

thisということはMainActivityクラスのオブジェクトということになりますが、MainActivityクラスには11行目でOnClickListenerインタフェースを実装していました。

 

そう、setOnClickListener()メソッドの引数にはOnClickListenerインタフェースを実装したオブジェクトを渡さなくてはいけないのです。

このsetOnClickListener()メソッドで「クリックするオブジェクト」(button)と「クリックしたときの処理」(thisに定義されているonClick()メソッド)が紐づくことになります。

 

 

最後に

今回はボタンを押したときにトーストを出力するというプログラムを作ってみました。

このソースプログラムを完全に理解できるようになるのはまだまだ先のことになります。ここで全てを理解する必要はありません。

「お!なんか動いた!!」

読者のみなさまがこんな気持ちになっていただけたら大成功だと思ってます(笑

 

次回は今回のプログラムを修正しつながら、もう少し掘り下げていきたいと思います。

 

 

初めて出てきたクラス・インタフェースたち

  • OnClickListenerインタフェース

http://developer.android.com/intl/ja/reference/android/view/View.OnClickListener.html

  • Toastクラス

http://developer.android.com/intl/ja/reference/android/widget/Toast.html

  • Buttonクラス

http://developer.android.com/intl/ja/reference/android/widget/Button.html

 


Android TIPS



  未経験OKの仕事 |  上場企業の仕事 |  高待遇の仕事 |  外資系の仕事 |  社内SEで検索 |  自社サービスで検索





メールアドレス
ご質問・問い合わせ等、ご自由にお書きください。