Androidアプリを構成するパーツにはいろいろなものがありますが、その中でも良く使われるのが「ボタン」です。以前の記事で画面のレイアウトを構成する方法を解説しました。しかし、ボタンはただ配置しただけでは押しても何も反応しません。レイアウトとして配置するだけでなくボタンを押したときの処理を実装しないといけません。
今回はボタンを実装する方法について解説します。
ボタンを配置する
まずはボタンを配置しましょう。今回の例では「activity_main.xml」にボタンを配置します。ボタンを配置するにはactivity_main.xmlを編集エリアに表示したあと、レイアウトの編集モードを「Design」にします。
左側のpaletteから「Button」を選択し、activity_main.xmlまでドラッグします。これでMainActivityにボタンが配置されます。
ボタンの処理を実装する
この状態で試しにアプリを起動してみると、ボタンが表示されます。しかしこのボタンは配置されているだけで「タップされた時にどう動けばいいか」は書かれていないのでタップしても何も起こりません。
ここではボタンの処理を実装します。例としてボタンをタップしたら「ボタンがタップされました」と画面に表示されるようにします。
イベントとイベントリスナー
何かしらの動作でアプリの状態が変化することを「イベント」と言います。「ボタンをタップした」というのもイベントの1つになります。また、イベントを受け取り何かしらの処理をするクラスを「イベントリスナー」と言います。
Androidアプリでアクティビティのイベントを処理するにはそのアクティビティにイベントリスナーとしての機能を持たせる必要があります。イベントリスナーの機能を持たせるには既に定義してある「イベントリスナーインターフェース」を実装します。
イベントリスナーインターフェースはいくつかありますが、ボタンの場合は「View.OnClickListener」を実装します。編集エリアにMainActivity.javaを表示させ、コードを以下のように変更します。
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
クラス定義の際にView.OnClickListnerを実装させます。なお、Viewはボタンやラベルなど、レイアウトを作成する際に使うパーツの総称です。
View.OnClickListnerの実装が出来たら、次は実装したイベントリスナーをボタンに登録します。イベントリスナーを登録するにはonCreateの中でsetOnClickLister()を使います。setContentViewのあとに以下のコードを追加してください。
findViewById(R.id.button).setOnClickListener(this);
findViewById()はアクティビティに設置しているパーツを取得するメソッドです。引数に取得したいパーツのIDを渡すことで取得できます。ボタンなどViewのIDは「R.id.渡したいパーツのID」という形式で渡します。今回はボタンのIDが「Button」なので「R.id.Button」を引数に渡します。
ボタンを取得したらsetOnClickListener()でボタンにイベントリスナーを登録します。なお、setOnClickListener()の引数にはOnClickListenerインターフェースを実装したクラスを入れます。この場合はこのクラス自体を入れるので「this」を入れます。
onClick()を実装する
setOnClickListenter()でボタンにイベントリスナーを登録したので、ボタンを押すことでonClick()というメソッドが呼ばれるようになりました。あとはonClick()の中身を実装するだけです。今回はボタンを押すと「ボタンがタップされました」と表示されるようにしたいので、以下のように実装します。
public void onClick(View view){ Toast.makeText(this, "ボタンがタップされました", Toast.LENGTH_SHORT).show(); }
ToastはAndroid上にトーストという短いメッセージを表示させるものです。ボタンをクリックするとonClick()が呼ばれ、このトーストが画面に表示されます。
これまでのソースコードをまとめるとこのようになります。
//パッケージ名は省略しています。 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(this); } public void onClick(View view){ Toast.makeText(this, "ボタンがタップされました", Toast.LENGTH_SHORT).show(); } }
実行結果はこのようになります。
【おすすめ記事】
➡Android(アンドロイド)アプリ開発を学べるスクール15選
➡Android(アンドロイド)アプリの本・参考書の評判
➡【Android入門】アプリ開発環境「Android Studio」のインストール方法
➡【Android入門】Android Studiodedeアプリの画面を作成しよう!