2

フラグメントに対してhasSetOptionsMenuがtrueの場合、OS2.xでの最初の起動時に毎回オーバーフローメニューが表示されることはありません。デバイスを回転させると問題が解決します。また、問題は3.xまたは4.xでは再現できません。

ActionBarSherlockの4.1バージョンを使用していますが、フラグメントを保持するFragmentActivityにはforceoverflowテーマがあります。

hasSetOptionsMenuをfalseに設定しようとしましたが、これで問題は解決したようですが、フラグメントごとに異なるメニュー項目を追加する必要があるため、これはオプションではありません。

アプリをデバッグすると、アプリ内のhasSetOptionsMenu(true)ごとにメニューが無効になり、アクティビティとフラグメントのonCreateOptionsMenuが再作成されたようです。また、興味深い事実は、デバッグ中にアプリの起動が異なるブレークポイントで停止するために遅延し、これによりオーバーフローメニューが表示されることです。これは、Android SDKで報告されたこの問題である可能性があることを私に確信させますが、コメント#8に記載されている回避策はどちらも私には効果がありませんでした。

別の情報:ハードウェアオプションボタンを押すと、オーバーフローメニューが表示されるため、オーバーフローアイコンが表示されないことが問題のようです。

また、この問題はABSで報告されたバグでもあることを発見しましたが、修正されたように閉じられており、ライブラリの最後のバージョンがあります。

誰かがこれに遭遇したことがありますか?そして、これの回避策/修正を知っていますか?

4

1 に答える 1

0

解決してください!「getSherlock()。dispatchInvalidateOptionsMenu();」を追加しました FragmentActivityのonResume()で、メニューの無効化を強制します。これで問題は解決したようです。私はこれがハックであることを知っていますが、別の解決策を見つけることができませんでした。メニューの無効化をフラグメント(onCreateViewまたはonActivityCreated)に追加しようとしましたが、修正されませんでした。したがって、この問題が発生した場合、これは回避策です。

    @Override
    protected void onResume() {
        super.onResume();

        .....
        getSherlock().dispatchInvalidateOptionsMenu();
    }

先端をありがとうマルコ!

于 2012-10-03T09:54:15.997 に答える