Javaプログラミング/Javaプログラミング関連情報

androidのダイアログを使いこなそう!(2ページ目)

画面にメッセージを表示するダイアログの基本をマスターしましょう。

執筆者:掌田 津耶乃

ボタンをクリックすると、画面にアラートウインドウが現れる。

アラートウインドウの表示方法


ここでは、BtnAdapterクラスとしてOnClickListenerを用意しておきました。onClickでは、AlertDialogクラスのshowメソッドを呼び出して、アラートを表示させています。これは、以下のような引数をもちます。

AlertDialog.show([Context],タイトル,メッセージ,ボタン名,キャンセル);

[Context]――ベースとなるContext(Activity)
タイトル――タイトルのテキスト
メッセージ――表示するメッセージ
ボタン名――ボタンに表示されるテキスト
キャンセル――キャンセル可能かどうかを示すboolean値


これで、画面に簡単にアラートを表示できます。最後のキャンセルに関する引数は、trueであればキャンセル可能、falseであれば不可を示します。

アラートを閉じる際の処理


このアラートウインドウは、パソコンなどのアラートと決定的に違う点が1つだけあります。それは「モーダルではない」という点です。モーダルとは、「それが閉じられるまで処理が停止される」という方式です。

例えば、ここではAlertDialog.showでアラートを表示しましたが、このメソッドを実行しても、そこで処理は停止しません。その後に何か処理があれば、アラートを表示したまま実行し続けてしまいます。ですから、「アラートを表示して、OKしたら続きを実行させる」というようなことは、このままではできないのですね。

では、どうするのか。それは、「アラートウインドウでボタンを押したときのイベント用リスナー」というものを作成するのです。そして、クリックしたらそのリスナーに処理してもらう、というわけです。

このイベントリスナーは、「OnClickListener」というものです。「ああ、ボタンをクリックしたときの処理で使ったやつだな」とすぐに思ったことでしょう。――が! 実は、違うのです。このOnClikListenerは、Buttonのクリック処理に使ったOnClickListenerとは違います。あちらはandroid.view.View.OnClickListenerでしたが、アラートのボタン用のものは、android.content.DialogInterface.OnClickListenerです。インターフェイス名は同じでも、まったく別のパッケージのものなのです。

では、このアラート用のOnClickListenerを利用する場合の書き方を以下に整理しておきましょう。

class クラス名 implements
    android.content.DialogInterface.OnClickListener {

  @Override
  public void onClick(DialogInterface arg0, int arg1) {
    // ここに処理を用意する
  }
  
}


このOnClickListenerを利用する場合にもっとも注意しなければならない点は、「2つのOnClickListenerを明確に区別してコーディングする」という点でしょう。通常、よく使うクラストはimportしてクラス名だけで使用できるようにしますが、2つのOnClickListener共にimportしてしまうと区別がつかなくなってしまいます。そこで、どちらか一方のみをimportし、もう一方はパッケージ名を指定して記述するようにしておくとよいでしょう。やはりButton用のOnClickListenerのほうが多用されますから、アラート用のものをパッケージ指定して書くほうがよいように思います。

中に用意するメソッドも、onClickと名前は同じですが、引数で渡されるものが異なっているのがわかります。第1引数のDialogInterfaceは、DialogInterfaceインターフェイスを実装したクラスのインスタンス(要するにイベントが発生したダイアログ)が渡され、第2引数にはクリックしたボタンの種類を示す数値が渡されます。


  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます