androidのonCreateOptionsMenu()作成メニューMenu詳細

6999 ワード

Androidには3つのメニューがあります:1.オプションメニュー(optinosMenu)2.コンテキストメニュー(ContextMenu)3.サブメニュー(subMenu)で最もよく使われるのは、menuボタンをクリックすると対応するActivityの下部に表示されるオプションメニュー(optionsMenu)です.
 
1.Activityメニューメカニズム(dialogと同様)Activityには、メニューの管理を実現するメカニズムがあります.方法は以下の通りです.public boolean onCreateOptionsMenu(Menu menu) , menu Menu 。
        true menu,false ;
( )
     2.public boolean 
onPrepareOptionsMenu(Menu menu) onCreateOptionsMenuが実行されると、メニューが表示される前に呼び出される.メニューが既に作成されている場合は、メニュー表示前に呼び出されます.同様に、  true menu,false ;( , )

     3.public void onOptionsMenuClosed(Menu menu) .
       
のメニューが閉じる3つのケースがあり、menuボタンが再度クリックされ、backボタンがクリックされたり、ユーザがメニュー項目を選択する.public boolean onOptionsItemSelected(MenuItem item)メニュー項目がクリックされたときに呼び出されます.つまり、メニュー項目のリスニング方法です.               2. 追加メニュー:onCreateOptionsMenuまたはonPrepareOptionsMenu

2.1コードで追加できます:menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID)
add()メソッドの4つのパラメータは、次のとおりです.
1、グループ分け、グループ分けしなければMenuと書きます.NONE, 
2、Id、これはとても重要で、AndroidはこのIdによって異なるメニューを確定します
3、順番、どのメニュー項目が前にあるかはこのパラメータの大きさで決まります
4、テキスト、メニュー項目の表示テキスト
add()メソッドはMenuItemオブジェクトを返し、setIcon()メソッドを呼び出し、対応するMenuItemにIconを設定します.
  public boolean onCreateOptionsMenu(Menu menu) {

        super.onCreateOptionsMenu(menu);

        menu.add(Menu.NONE, Menu.First+1, 0, "  ").setIcon(R.drawable.setting);

        return true;

    }

 
2.2レイアウトファイルの追加:getMenuInflater()inflate(R.menu.options_menu, menu);ActivityのgetMenuInflater()を呼び出してMenuInflaterを取得し、inflateメソッドを使用してレイアウトファイルの定義されたメニューを2番目のパラメータに対応するmenuオブジェクトにロードします.
     @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        super.onCreateOptionsMenu(menu);

        getMenuInflater().inflate(R.menu.options_menu, menu);

        return true;

    }

レイアウトファイル:resディレクトリの下にmenuフォルダを作成し、レイアウトファイルを作成します:options_menu.xml 
<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/menu_setting" android:title="  " android:icon="@drawable/setting"></item>

</menu>

   
3.メニュー項目の傍受:メニュー中のメニュー項目がクリックされると、onOptionsItemSelected(MenuItem item)itemパラメータがクリックされたメニュー項目であることがトリガーされるので、この方法内でどのItemがクリックされたかを判断し、異なる操作を実現する必要がある.2つの異なるメニューの追加方法について、判断の方法には少し違いがありますが、本質は同じです.
3.1コード追加メニューの判断方法
@Override

    public boolean onOptionsItemSelected(MenuItem item) {

        super.onOptionsItemSelected(item);

        switch(item.getItemId())//      item itemId

        {

        case Menu.First+1: //   ID   add       Id

            break;

        case Menu.First+2:

            break;

        }

        return true;

    }

3.2レイアウトファイル追加メニューの判断方法:
@Override

    public boolean onOptionsItemSelected(MenuItem item) {

        super.onOptionsItemSelected(item);

        switch(item.getItemId())//      item itemId

        {

        case R.id.menu_setting://   Id          Id,  R.id.XXX       

            break;

        case R.id.menu_info:

            break;

        }

        return true;

    }