2010-12-12 13 views
15

のライフサイクル中に一度呼び出されます(メニューメニューは)私がonCreateOptionsMenuのみ活動

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

は一度だけ呼び出されることに気づきました。私はアプリケーションの状態に応じてメニューからアイテムを追加/削除するので、メニューが表示されるたびに呼び出される必要があります。

これは可能ですか?

答えて

28

はい。これを行うには:

public boolean onPrepareOptionsMenu (Menu menu) 

このコードはオプションメニューが表示される前に実行されます。 詳細情報here

2

メニュー項目を動的に更新したいのですか? override onPrepareOptionsMenu()

9

開かれるたびにメニューが変更されるようにするには、Android sdkのバージョンによって異なるものが考慮されます。

アクティビティのライフサイクル中に発生するイベントに基づいて、オプションメニューを変更したい場合は、あなたがonPrepareOptionsMenu()メソッドで行うことができます。

これは、開発者ガイドが言うことです。このメソッドは、現在存在するようにMenuオブジェクトを渡します。そのため、アイテムの追加、削除、無効化などの変更が可能です。

Android 2.3.x以下では、ユーザがオプションメニューを開くたびに(メニューボタンを押す)システムはonPrepareOptionsMenu()を呼び出します。

Android 3.0以上では、メニュー項目がアクションバーに表示されているときに、オプションメニューが常に開いているとみなされます。イベントが発生し、メニュー更新を実行するには、invalidateOptionsMenu()を呼び出してシステムコールonPrepareOptionsMenu()を要求する必要があります。

+0

私はあなたのブール値を設定した後、またはメニューを切り替えるために使用しているもののどこかで、getActivity()。invalidateOptionsMenu()を呼び出すだけです。 – whyoz