アクションバーにメニュー項目のリストがあります。アイテムをクリックするたびに、異なるメソッドがトリガーされます。ただし、onOptionsItemSelectedが呼び出されることはありません。
MainActivityでアクションバーを定義する方法は次のとおりです。
public class MainActivity extends AppCompatActivity {
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings_1) {
//do something
return true;
} else if (id == R.id.action_settings_2) {
//do something
return true;
} else if (id == R.id.action_settings_1) {
//do something
return true;
}
return super.onOptionsItemSelected(item);
}
...
}
これは、アクションバーのメニューレイアウトmenu_mainです。
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
tools:context="com.example.MainActivity">
<item
Android:id="@+id/action_settings_1"
Android:orderInCategory="1"
Android:title="Item 1"
app:showAsAction="never" />
<item
Android:id="@+id/action_settings_2"
Android:orderInCategory="2"
Android:title="Item 2"
app:showAsAction="never" />
<item
Android:id="@+id/action_settings_3"
Android:orderInCategory="3"
Android:title="Item 3"
app:showAsAction="never" />
</menu>
アクションバーアイテムがクリックされたときにonOptionsItemSelectedが呼び出されるように、アクションバーを設定するにはどうすればよいですか?
onCreateOptionsMenu
内で、superを呼び出す代わりにtrueを返します。それはそれをする必要があります
以下のように変更してください:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu. menu_main, menu);
return true;
}