Androidプログラミングのメニューの実現方法の実例


この例は、Androidプログラミングのメニューの実現方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
Options Menuユーザーがmenu buttonボタンを押すと表示されるメニュー
Contect Menuでは、ユーザが画面を長押しすると、コンテキストメニューの表示画面が登録されます。
Submenu    ユーザがメニューのオプションを押すと、ポップアップされたサブメニューが表示されます。
以上の三つのメニューはつまりオプションメニューとコンテキストメニューとサブメニューです。
コンテキストメニュー
1.onCreateConteextMenuを実現すればこのメニューを作成できます。

@Override 
 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
  // TODO Auto-generated method stub 
  super.onCreateContextMenu(menu, v, menuInfo);
  //          menu.xml
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.layout.menu, menu);
  //             
  menu.setHeaderTitle("    -ContextMenu");
  menu.add(0, 0, 0, "      0");
  menu.add(0, 1, 0, "      1");
}

2.メニューのオプションをクリックしたときにこの方法を呼び出します。

@Override
 public boolean onContextItemSelected(MenuItem item) {
  // TODO Auto-generated method stub
  AdapterContextMenuInfo infor = (AdapterContextMenuInfo)item.getMenuInfo();
  switch (item.getItemId()) {
  case R.id.help:
    return true;
  case R.id.addnew:
  }
}

3.コンテキストメニューがオフになったときに呼び出す方法

@Override
  public void onContextMenuClosed(Menu menu) {
  // TODO Auto-generated method stub
  super.onContextMenuClosed(menu);
}

このように既に定義されているコンテキストメニューについては、いくつかのコントロールに登録しなければなりません。このようにコントロールを長く押し続けると、コンテキストメニューが出てきます。コンテキストメニューをどのように特定のコントロールに登録しますか?最初はListViewを実現するモニターです。
listview.set OnCreateConttext MenuListener(new OneeateConteed text MenuListener){  
コンテキストメニューもこの方法で作成します。

public void onCreateContextMenu(ContextMenu conMenu, View view , ContextMenuInfo info) {
  conMenu.setHeaderTitle("ContextMenu");
  conMenu.add(0, 0, 0, "Delete this favorite!");
  /* Add as many context-menu-options as you want to. */
 }
});

または、直接に本活動でレギターForConteextMenu(this.listView 1)を呼び出します。ここはListViewに登録しました。これでListViewを長く押すとコンテキストメニューが出ます。
二.オプションメニュー
比べてみれば簡単です。
同じ理屈はonCreateoptions Menuを実現するだけで、OptionsItem SelectedとOptionsMenuCloedはOKです。
三.サブメニュー
サブメニューも難しいわけではないですが、確かにこのようにオプションメニューやコンテキストメニュー(コンテキストメニューでもサブメニューが実現できます。ここではこのような例を挙げます。)が実現されれば、サブメニューの実現はスムーズになります。上の代のように
コード:

@Override
 public void onCreateContextMenu(ContextMenu menu, View v,
  ContextMenuInfo menuInfo) {
  // TODO Auto-generated method stub
  super.onCreateContextMenu(menu, v, menuInfo);
  //         menu.xml
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.layout.menu, menu);
  //            
  menu.setHeaderTitle("    -ContextMenu");
  menu.add(0, 0, 0, "      0");
  menu.add(0, 1, 0, "      1");
  //                
  int base = menu.FIRST + 100;
  SubMenu sm = menu.addSubMenu(base, base + 1, Menu.NONE, "submenu");
  sm.add(base, base + 2, base + 2, "sub item1");
  sm.add(base, base + 3, base + 3, "sub item2");
}

このようにメニューも実現され、そのクリックイベントについては、該当するオプションメニューやコンテキストメニューのリスニング器でそのまま実行すると判断すれば大丈夫です。
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。