トースト
Androidには、トースト(Toast)と呼ばれる、画面にメッセージを表示する機能があります。トーストは、フェードインして表示され、一定時間経過後に自動的にフェードアウトします。
トーストの表示
トーストを表示するには、android.widgetパッケージのToastクラスを使用します。通常、Toastクラスで定義されたmakeText()というスタティックメソッドを利用して、Toastクラスのオブジェクトを生成します。
makeText()メソッドは、アプリケーションまたはアクティビティのContextオブジェクト、表示メッセージ、持続期間、の3つのパラメータを受けつけます。その後、実際の表示はshow()メソッドで行います。
引数のContextとは、アプリケーションまたはアクティビティの状態を保持しているオブジェクトで、ウィジットの引数としてよく使われるものです。また、トースト表示の持続期間は、Toastクラスで定義されている、Toast.LENGTH_LONGまたはToast.LENGTH_SHORTという定数を指定します。
// Contextの取得 Context context = getApplicationContext(); // Toastオブジェクトの生成 Toast toast = Toast.makeText(context, "Toastサンプル", Toast.LENGTH_LONG); // 表示 toast.show(); // 以下のようにメソッドチェーンを利用して1行にすることもできる Toast.makeText(this, "Toastサンプル", Toast.LENGTH_LONG).show();
なお、makeText()、show()は、メソッドチェーンを利用して1行にすることもできます。このサンプルを実行すると、以下のような表示になります。
ダイアログ
トーストは一方的に通知するだけですが、メッセージの表示だけでなく、何らかの入力が必要な場合に用いるのが、ダイアログです。通常ダイアログは、自動的に消えることなく、ユーザのアクションがあるまで表示され続けます。
AlertDialg
Androidでは、いくつかのダイアログが標準で提供されています。ただし基本となっているのは、android.appパッケージのAlertDialgというクラスです。AlertDialgは、その名のとおり、警告など何かしらメッセージを表示するときに便利に使えるものです。またメッセージを表示するだけでなく、さまざまな表示方法に対応しており、高機能なコンポーネントです。
今回は、AlertDialgクラスのかんたんな使い方を紹介しましょう。
ダイアログの生成と表示
通常、AlertDialgを生成するには、AlertDialgクラスを直接用いるのではなく、AlertDialog.Builderというオブジェクトを利用します。
AlertDialog.Builderは、引数にContextオブジェクト指定して生成し、その後、このオブジェクトのメソッドを使って、タイトルや表示するメッセージの設定、ボタンの設定を行います。
次のサンプルコードは、OKボタンを持つダイアログです。
// ダイアログの生成と表示 AlertDialog.Builder dlg = new AlertDialog.Builder(this); // 引数はContextオブジェクト dlg.setTitle("sample"); // タイトル設定 dlg.setMessage("アラートダイアログ"); // メッセージ設定 dlg.setPositiveButton("OK", null); // ボタン設定 dlg.show(); // ダイアログの生成と表示
show()メソッドで、ダイアログの生成と表示を行います。このコードを実行すると、次の表示になります。
AlertDialogクラスでは、ダイアログを閉じるボタンとして、PositiveButton、NeutralButton、NegativeButtonの3つが定義されており、それぞれに対応した設定メソッドがあります。基本的にはボタンが1つならPositiveButton、2つならPositiveButton、NegativeButtonを用います。
ボタンのクリックリスナー
setPositiveButton()メソッドの引数は、表示文字列と、ボタンのクリックリスナーです。リスナーを登録すると、ボタンのクリック時に実行する処理を記述することができます。なお、ここでのリスナーは、DialogInterface.OnClickListenerインターフェイスとなります。さきほどのビューでのボタンで用いた、android.view.View.OnClickListenerインターフェイスとは異なりますので注意してください。
たとえば、ボタンをクリックしたときに、トーストを表示するなら、次のようになるでしょう。
// ボタン設定 dlg.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Toast.makeText(HelloAndroid.this, "OKボタンクリック", Toast.LENGTH_LONG).show(); } });
onClick()メソッドの最初の引数には、クリックが発生したダイアログのオブジェクト、第2引数には、クリックが発生したボタンの種類が渡されます。ボタンの種類は、android.content.DialogInterfaceインターファイスで定義された、BUTTON_NEGATIVE、BUTTON_NEUTRAL、BUTTON_POSITIVEのいずれかの定数になります。
なおToast.makeTextの第1引数では、HelloAndroidを指定しています。これは、単にthisだけでは、無名クラスのオブジェクトを指定したことになってしまうからです。
最後に
今回は、ビューを用いたAndroid画面処理とイベント処理、トースト、ダイアログの表示といったユーザーインターフェイスの基本処理を解説しました。次回からは、改めて本題に戻って、Java SE APIを中心に説明することにします。
参考資料
- 『基礎からのAndroidプログラミング』 I/O編集部 著、工学社、2011年1月
- Android Developers