22

android-support-v4.jarライブラリを使用するプロジェクトのICSのフラグメントに表示するオプションメニューを取得できません。GalaxyNexusハンドセットでテストしています。

アクションバーは使用していないため、アプリは2.2以降と互換性がある必要があります。ICSのアクティビティにオプションメニューが表示されません(FragmentActivityはonCreateOptionsMenuをサポートしていません)

以前のバージョンのAndroidでメニューを機能させることができます-オプションメニューを有効にするための正しいフレームワークはすべてありますが(以下のように)、ICSには何も表示されません。コードをステップスルーするとき、onCreateOptionsMenuは呼び出されません。誰かが修正を提案できますか?

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

public class SuperFragment extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.display_options_actions, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.menu_sign_in:
                break;
            case R.id.menu_sign_out:
                break;
        }
        return true;
    }
    // ...
}

マニフェストファイルのターゲットOSバージョン:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="14"/>
4

3 に答える 3

32

マニフェストから削除android:targetSdkVersion="14"すると、オプションメニューボタンが再び有効になります。

これは@android:style/Theme.Black.NoTitleBar、マニフェストで指定されたテーマがあったためです。android:targetSdkVersionが14の場合、下部のボタンバーにあるオプションメニューボタンではなく、オプションメニューがアクションバーメニューに挿入されます。画面とテーマは、アクティビティのタイトルとアクションバーを削除しています。

アクションバーは削除できますが、バージョン2.2〜4で互換性があるようにまだ機能していないため、これで問題が解決するかどうかはわかりません。

于 2011-12-02T09:55:09.327 に答える
11

android:targetSdkVersionを「14」から「10」(11未満)に変更するだけで、この問題は解決されます。

<uses-sdk android:minSdkVersion="3" 
      android:targetSdkVersion="10" />
于 2012-06-21T10:04:51.307 に答える
2

Android CDDによると、オプションメニューを表示しないという新しい動作のカットオフはtargetSdkVersion> 10です。オプションは、targetSdkVersion <= 10のレガシーモードでアプリを実行するか、アプリを新しいガイドラインに適合させることです(例:追加アプリのメニューボタンまたはアクションバーを使用します)。targetSdkVersionを増やすために、ターゲットビルドバージョン(Eclipseのプロジェクトプロパティ)を増やす必要はないことに注意してください。

于 2012-01-12T18:19:07.070 に答える