1

私のアプリケーションには次のようなものがあります。

TabActivity
    Tab 1 (ActivityGroup)
        Activity > Activity > MapActivity
    Tab 2 (ActivityGroup)
        MapActivity

問題は、Tab 2 MapActivityにオプションメニューが表示されず、エラーが表示されることです。しかし、最初のMapActivityは完全に機能します。メソッド内にブレークポイントを設定しましたonCreateOptionsMenuが、入力しました。

このチュートリアルを使用して、TabHostをベースにしたアプリケーションを作成しました。

誰かが私に、なぜ一方が機能し、もう一方が機能しないのかを知るのを手伝ってもらえますか?

前もって感謝します。

アップデート

バージョンについて:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="13" />

最初のMapActivityクラス:

public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, 0, 1, "Nearest");
    menu.add(0, 1, 1, "Directions");
    return true;
}

2番目のMapActivityクラス:

public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, 0, 1, "Nearest");
    menu.add(0, 1, 1, "Region");
    return true;
}
4

1 に答える 1

3

基本的に、TabHostオプション メニューは 1 つだけです。

私はそれをテストしていませんが、私の推測では、 から true を返す最初のアクティビティを使用しているだけですonCreateOptionsMenu。タブごとに異なるオプション メニューが必要な場合は、いくつかのことを行う必要があります。

1) サブクラスTabHost化してオーバーライドonCreateOptionsMenuし、onPrepareOptionsMenu.

2) タブが変更されたら (このイベントをどのようにリッスンしたか覚えていないので、ググってください)、 を呼び出しますinvalidateOptionsMenu。これにより、 が強制的に呼び出されonPrepareOptionsMenuます。

3) ではonPrepareOptionsMenu、必ず を呼び出してから、タブ固有のオプション メニューを作成するために menu.clear()で行う通常のメニュー インフレーションを行います。onCreateOptionsMenu

于 2012-04-13T21:23:03.673 に答える