OptionsMenでアプリケーションを作成しています。いくつかの例を見つけましたが、super.onCreateOptionMenu()
メソッドでonCreateOptionsMenu()
を呼び出す場所は人によって異なります。
さまざまな方法のリスト:
@Override // without super
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mymenu, menu);
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mymenu, menu);
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mymenu, menu);
return super.onCreateOptionsMenu(menu);
}
何を使うべきですか?
それはあなたが何をしたいかによります。最初の例では、メニューを配置し、メニューのみを配置します。 2つ目は、最初のスーパークラスメニューを追加します。最後のものは最初にあなたのメニューを追加します。ただし、メニューには注文フィールドもあり、レンダリング時に考慮されることに注意してください。
すでにメニューがあるアクティビティを拡張しているが、そのメニューを表示したくないが、別のメニューを表示したいとします。その場合、最初のアプローチを使用します。
別の例:メニューのあるアクティビティを拡張していて、別のメニューを追加したい。その場合、2番目または最後のアプローチを使用できます。
onCreateOptionsMenu()
のソースは次のとおりです。
public boolean onCreateOptionsMenu(Menu menu) {
if (mParent != null) {
return mParent.onCreateOptionsMenu(menu);
}
return true;
}
ここで、mParent
は現在のアクティビティの親アクティビティです。アクティビティが拡張する場合Android.app.Activity
は、最後にtrue
を返すだけで、super
の呼び出しについて心配する必要はありません。デフォルトの実装では、親アクティビティに基づいてメニューが表示されますが、おそらく表示されません。欲しいです。