私は以下を通して作成されたメニューを持っています:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("Email");
return super.onCreateOptionsMenu(menu);
}
しかし、onclicklistenerを設定する方法を思い出せないので、onclicklistenerを選択すると、メール機能を実行できます。
私は以下を通して作成されたメニューを持っています:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("Email");
return super.onCreateOptionsMenu(menu);
}
しかし、onclicklistenerを設定する方法を思い出せないので、onclicklistenerを選択すると、メール機能を実行できます。
オーバーライドしonOptionsItemSelected(MenuItem item)
ます。だからそれは
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
// do whatever
return true;
default:
return super.onOptionsItemSelected(item);
}
}
編集:
これは非常に多くのポイントを獲得しているので、メニューオプションにIDを追加することは非常に良いことに注意する必要があります。それらが常に一意であることを確認する良い方法は、フォルダーids.xml
に配置されたリソースでそれらを定義することです。res/values
ids.xml
<resources>
<item name="menu_action1" type="id"/>
<item name="menu_action2" type="id"/>
<item name="menu_action3" type="id"/>
</resources>
次に、メソッドをオーバーライドするときにonCreateOptionsMenu(Menu menu)
、次のようにIDを使用できます。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, R.id.menu_action1, Menu.NONE, R.string.menu_action1);
menu.add(Menu.NONE, R.id.menu_action2, Menu.NONE, R.string.menu_action1);
return true;
}
オーバーライドしonOptionsItemSelected(MenuItem item)
ます。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_action1:
// do whatever
return true;
case R.id.menu_action2:
// do whatever
return true;
default:
return super.onOptionsItemSelected(item);
}
}
これを行う理由は、Activity
これをメニューオプションでオーバーライドするためですがFragments
、独自のメニュー項目を追加することもできます。を使用ids.xml
すると、IDの順序に関係なく、IDが一意になります。
それはうまくいきません。メニュー項目のIDを定義する必要があります。
public static final int MENU_ADD = Menu.FIRST;
public static final int MENU_DELETE = Menu.FIRST + 1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, MENU_ADD, Menu.NONE, "Add");
menu.add(Menu.NONE, MENU_DELETE, Menu.NONE, "Delete");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case MENU_ADD:
return true;
case MENU_DELETE:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
newGame();
return true;
case R.id.help:
showHelp();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.itemid:
//do cool stuff
break;
}
}