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(){
public boolean onMenuItemClick(MenuItem item){
……メニュー項目を選んだ時の処理……
}
}これが、OnMenuItemClickListenerの内容です。onMenuItemClickというメソッドを1つもっており、メニューを選択するとこれが呼び出されます。引数には、イベントが発生したMenuItemインスタンスが渡されます。では、実際にメニューを作成してみましょう。以下にサンプルを掲載しておきます。「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;
}
}
※関連コンテンツ