9

メニュー項目を非表示および表示するために onPrepareOptionsMenu をオーバーライドしています。API レベル 16 エミュレーターでテストする場合。初めてメニューを開くとき、onPrepareOptionsMenu は呼び出されません。しかし、メニューを再度開くと機能します。問題は最初の使用のみです。これで簡単にテストできます。

@Override
public void onPrepareOptionsMenu(Menu menu) {
    Toast.makeText(this.getActivity(), "pre", Toast.LENGTH_SHORT).show();
    super.onPrepareOptionsMenu(menu);
}

何か案は?

4

2 に答える 2

17

onPrepareOptionsMenu()ユーザーが Gingerbread 以下のメニューを開くたびに呼び出されます。ハニカムから上のオプション メニューは、アイテムが ActionBar に存在する場合、常に開いていると見なされます。

アクティビティのライフサイクル中およびonPrepareOptionsMenu()コールバック内でオプション メニューを更新する場合は、 を呼び出す必要がinvalidateOptionsMenu()あり、onPrepareOptionsMenu()が呼び出されます。

コールバックで最初に使用するコードを実装できませんでしたonCreateOptionsMenu()か? オプション メニューが作成されるたびに呼び出され、最初の使用時に作成されます。

于 2012-10-14T21:44:06.947 に答える