androidのonCreateOptionsMenu()作成メニューMenu詳細
6999 ワード
Androidには3つのメニューがあります:1.オプションメニュー(optinosMenu)2.コンテキストメニュー(ContextMenu)3.サブメニュー(subMenu)で最もよく使われるのは、menuボタンをクリックすると対応するActivityの下部に表示されるオプションメニュー(optionsMenu)です.
1.Activityメニューメカニズム(dialogと同様)Activityには、メニューの管理を実現するメカニズムがあります.方法は以下の通りです.public boolean onCreateOptionsMenu(Menu menu)
add()メソッドの4つのパラメータは、次のとおりです.
1、グループ分け、グループ分けしなければMenuと書きます.NONE,
2、Id、これはとても重要で、AndroidはこのIdによって異なるメニューを確定します
3、順番、どのメニュー項目が前にあるかはこのパラメータの大きさで決まります
4、テキスト、メニュー項目の表示テキスト
add()メソッドはMenuItemオブジェクトを返し、setIcon()メソッドを呼び出し、対応するMenuItemにIconを設定します.
2.2レイアウトファイルの追加:getMenuInflater()inflate(R.menu.options_menu, menu);ActivityのgetMenuInflater()を呼び出してMenuInflaterを取得し、inflateメソッドを使用してレイアウトファイルの定義されたメニューを2番目のパラメータに対応するmenuオブジェクトにロードします.
レイアウトファイル:resディレクトリの下にmenuフォルダを作成し、レイアウトファイルを作成します:options_menu.xml
3.メニュー項目の傍受:メニュー中のメニュー項目がクリックされると、onOptionsItemSelected(MenuItem item)itemパラメータがクリックされたメニュー項目であることがトリガーされるので、この方法内でどのItemがクリックされたかを判断し、異なる操作を実現する必要がある.2つの異なるメニューの追加方法について、判断の方法には少し違いがありますが、本質は同じです.
3.1コード追加メニューの判断方法
3.2レイアウトファイル追加メニューの判断方法:
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;
}