Activityを拡張するBaseActivityクラスがあります。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// draw menu stuff
}
次に、BaseActivityを拡張する他のクラスがあります。
HelpActivityはアクティビティを拡張します
継承のルールに従って、BaseActivtyのonCreateOptionMenu呼び出しを自動的に継承すると思いました。そうではないので、理由はわかりません。
しかしとにかく、HelpActivityで私はこれを追加しました:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
そしてそれも機能しませんでした(つまり、Galaxy Nexusにメニューが表示されませんでした)。そこで、BaseActivityのonCreateOptionsMenu呼び出しを文字通りコピーしてHelpActivityに貼り付けましたが、それは機能しました。なぜそうなのですか?
編集:2つのメモ:私がそれが機能していないと言うとき、私は意味します:私はギャラクシーネクサスを持っています、そしてメニューはアクションバー(ActionBarSherlock)にさえ表示されません。それが機能するとき、私はメニュー省略記号を含むメニューを取得します。
第二に:
Androidドキュメントによると:
ヒント:アプリケーションに複数のアクティビティが含まれていて、それらの一部が同じオプションメニューを提供する場合は、onCreateOptionsMenu()メソッドとonOptionsItemSelected()メソッド以外は何も実装しないアクティビティを作成することを検討してください。次に、同じオプションメニューを共有する必要があるアクティビティごとにこのクラスを拡張します。このように、メニューアクションを処理するためのコードセットを1つだけ管理する必要があり、各子孫クラスはメニューの動作を継承します。
取得元:[オプション]メニューコードの再利用