22

android-support-v4.jarライブラリを使用するプロジェクトで、ICSのフラグメントに表示するオプションメニューを表示できません。私はGalaxy Nexusハンドセットでテストしています。互換性ライブラリを使用してICSにオプションメニューが表示されない

私たちはアクションバーを使用していないため、アプリに2.2以上の互換性が必要です。

私はAndroidの以前のバージョンで動作するメニューを得ることができます - 私はオプションのメニューを有効にするためのすべての正しいフレームワークを持っています(as以下)、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"/> 
+0

ここでインポートリストを参照すると便利です。サポートライブラリのフラグメントやフレームワークからのandroid.app.Fragmentを使用していますか?アクティビティから他のメニュー項目が表示されていますか?あなたの活動はアクションバーを使っていますか?マニフェストのtargetSdkVersionは何ですか? – adamp

+0

あなたのコメントをお寄せいただきありがとうございます。私は質問にいくつかの詳細を追加しました – Martyn

答えて

32

マニフェストからandroid:targetSdkVersion="14"を削除するには、もう一度オプションメニューボタンを可能にします。

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

The action bar can be removed、私はそれがバージョン2.2間で互換性がありますように、それは作業を取得するために、まだだとして、この問題が解決するかどうかはわからないが - AndroidのCDDのためのカットオフによると、4

+4

キーはターゲット14ではなく、それをmaxSDKとして含めることができます。この方法では、ICSは古いメニューを前方互換にし、ActionBarを期待しないようにしようとしています –

+4

実際にキーはターゲットが11未満です。大規模な頭痛!私たちは、ActionBarテーマを使用しても互換性メニューを有効にしないと考えました。明らかにそうではありません! –

+0

何が苦しい!これで、私は今メニューに行くことができました。ありがとう!これはデフォルトのターゲットを1にします。これは、あなたがあなたのアプリで使用している他の互換性のないウィジェットに問題を引き起こす可能性があります。 – Ramp

2

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

11

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

<uses-sdk android:minSdkVersion="3" 
     android:targetSdkVersion="10" /> 
関連する問題