GUI、再び! (4/7)
作成:2010-06-17 12:20
更新:2010-06-17 12:20
更新:2010-06-17 12:20
■オプションメニューを作る
Androidのアプリでは、「メニュー」ボタンを押すと、画面の下からメニューがプルアップして現れます。このメニューも、もちろん作成することができます。
これは「オプションメニュー」というもので、Activityクラスには、メニュー生成時のイベント処理を行うためのメソッドが用意されています。これをオーバーライドし、その中でメニューを実装する処理を用意すれば、そのメニューがActivityで使えるようになります。
○メニュー項目の作成
○OnMenuItemClickListenerの組み込み
○OnMenuItemClickListenerの定義
では、実際にメニューを作成してみましょう。以下にサンプルを掲載しておきます。「Toast」「Alert」という2つのメニュー項目があり、選択すると、それぞれトーストまたはアラートダイアログを表示します。
これは「オプションメニュー」というもので、Activityクラスには、メニュー生成時のイベント処理を行うためのメソッドが用意されています。これをオーバーライドし、その中でメニューを実装する処理を用意すれば、そのメニューがActivityで使えるようになります。
@Overrideこれがそのメソッドです。引数には、「メニュー」ボタンで表示されるメニューとなる「Menu」クラスのインスタンスが渡されます。このMenuに、「MenuItem」というメニュー項目のインスタンスを作成して組み込むことで、メニューを作成していくことができます。
public boolean onCreateOptionsMenu(Menu menu) {
……ここにメニュー作成処理を用意する……
}
○メニュー項目の作成
MenuItem 変数 = [Menu].add( 項目名 );メニュー項目は、Menuの「add」メソッドで作成します。これは、そのMenuに新しいメニュー項目を追加するためのもので、引数には項目に表示されるテキストを指定します。
○OnMenuItemClickListenerの組み込み
[MenuItem].setOnMenuItemClickListener( [OnMenuItemClickListener] );メニューをクリックした時の処理は、「setOnMenuItemClickListener」メソッドでイベントリスナーを設定して行います。引数には、OnMenuItemClickListenerインスタンスを用意します。
○OnMenuItemClickListenerの定義
new OnMenuItemClickListener(){これが、OnMenuItemClickListenerの内容です。onMenuItemClickというメソッドを1つもっており、メニューを選択するとこれが呼び出されます。引数には、イベントが発生したMenuItemインスタンスが渡されます。
public boolean onMenuItemClick(MenuItem item){
……メニュー項目を選んだ時の処理……
}
}
では、実際にメニューを作成してみましょう。以下にサンプルを掲載しておきます。「Toast」「Alert」という2つのメニュー項目があり、選択すると、それぞれトーストまたはアラートダイアログを表示します。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package jp.tuyano; import android.app.*; import android.os.Bundle; import android.view.*; import android.view.MenuItem.OnMenuItemClickListener; import android.widget.*; public class SampleApp extends Activity { private Activity me; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); me = this; setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuItem item1 = menu.add("Toast"); MenuItem item2 = menu.add("Alert"); OnMenuItemClickListener listener1 = new OnMenuItemClickListener(){ public boolean onMenuItemClick(MenuItem item){ Toast toast = Toast.makeText(me,"トーストです。",Toast.LENGTH_LONG); toast.show(); return false; } }; OnMenuItemClickListener listener2 = new OnMenuItemClickListener(){ public boolean onMenuItemClick(MenuItem item){ AlertDialog.Builder builder = new AlertDialog.Builder(me); builder.setMessage("アラートだよ。"); builder.show(); return false; } }; item1.setOnMenuItemClickListener(listener1); item2.setOnMenuItemClickListener(listener2); return true; } }
※関連コンテンツ