Androidアプリ開発学習記録:Part1 第4章「イベントとリスナー」

 javaを学習していくうちにやってみたいとは思ったものの、結局途中で投げ出してしまったandroidでのアプリ開発をもう一度学習する事にしてみました。その学習記録や備忘録を残していこうと思います。
使用する教材は株式会社翔泳社の「Androidアプリ開発の教科書」を使用します。

今回、記録として残そうと思うのは、第4章「イベントとリスナー」です。

リスナの設定方法

 アプリのレイアウトや、アプリ上に表示する文字列はXMLで記述しなければいけませんが、アプリ自体の処理はjavaで記述しなければなりません。
 端末に対する操作であるイベントを検出するには、リスナを設定する必要があります。
イベントに対し、実行する処理をイベントハンドラと言います。 
 テキストを入力して、ボタンを押すとそのテキストを返すようなアプリケーションをつくるとしましょう。
 Androidでリスナを設置する手順としては、以下の通りです。

1.それぞれのイベントに対応したリスナクラスを作成する。
タップというイベントに対してのリスナクラスを作成するには、View.OnCliclListenerインターフェースを実装します。

2.リスナクラス内の所定のメソッドに処理を記述する(このメソッドがイベントハンドラ)。
 View.OnCliclListenerインターフェースの場合はonClickメソッドとなります。onClickメソッド内に書き込む処理は「EditTextから入力された文字を取得して、Textviewに表示させる。」です。その処理を実行するには、画面部品を取得する必要があります。それを行うのがfindViewById()メソッドです。引数として渡すのは、android:idとして設定された画面部品のidを示すR値です。


//例)レイアウトファイル内
<EditText
android:id=”@+id/etName”/>

アクティビティファイル内
findViewById(R.id.etName);

というように指定して画面部品を取得します。

3.リスナクラスをnewしてリスナ設定メソッドを引数として渡す。
 最後の手順としてリスナ本体を設定します。
 まず、ボタンのオブジェクトを取得し、リスナのインスタンスを作成します。リスナを設定するメソッドはインタ
ーフェースによってまちまちですが、実装したインターフェースと関連のある名前になってます。
 ボタンにはsetOnClickListener(リスナのインスタンス)でリスナを設定します。


//例)
Button btn = findViewById(レイアウトファイルで設定したボタンのR値);
TestListener listener = new TestListener();
btn.setOnClickListener(listener);

 これで、リスナの設定が完了しました。
 第4章を参考に作成したアプリが次のものです。

名前を入力して、表示を押すと入力した名前を返してくれるアプリです。
クリアを押すことで、画面上のすべての項目を削除してくれます。

このアプリの場合、表示ボタンとクリアボタンにリスナが設定されているわけです。
イベントハンドラは共通で、switch構文で各ボタンのR値で分岐させてます。


  //リスナクラス
 
  private class HelloListener implements View.OnClickListener{
  @Override
    public void onClick(View view) {
        EditText input = findViewById(R.id.etName);
        TextView output = findViewById(R.id.tvOutput);

        int id = view.getId();
        switch(id){
                case R.id.btClick:
                    String inputStr = input.getText().toString();
                    output.setText(inputStr+"さん、こんにちは!");
                break;
                case R.id.btClear:
                    input.setText("");
                    output.setText("");
                break;
        }

    }
}

getId()メソッドでイベントを受け取った画面部品のR値を取得できます。
受け取ったR値を変数idに代入してそれをswitch構文の中でレイアウトファイル内で設定したR値と、比較させて処理を分岐させてます。

  • 10
  • 3
  • 6

おすすめのタグ

hru

狭く深くがモットー。実際のところは広く浅く。 音楽、プログラミング、その他諸々、できるだけ狭く深く語って行きたいです。

作者のページを見る

寄付について

「novalue」は、‟一人ひとりが自分らしく働ける社会”の実現を目指す、
就労継続支援B型事業所manabyCREATORSが運営するWebメディアです。

当メディアの運営は、活動に賛同してくださる寄付者様の協賛によって成り立っており、
広告記事の掲載先をお探しの企業様や寄付者様を随時、募集しております。

寄付についてのご案内