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"/>
マニフェストからAndroid:targetSdkVersion="14"
を削除すると、オプションメニューボタンが再び有効になります。
これは、マニフェストで@Android:style/Theme.Black.NoTitleBar
のテーマが指定されていたためです。Android:targetSdkVersionが14の場合、ボタンバーのオプションメニューボタンではなく、オプションメニューがアクションバーメニューに挿入されます。画面の下部にあり、テーマはアクティビティのタイトルとアクションバーを削除しています。
アクションバーは削除できます ただし、バージョン2.2〜4で互換性があるようにまだ機能していないため、これで問題が解決するかどうかはわかりません。
Android:targetSdkVersionを「14」から「10」(11未満)に変更するだけで、この問題は解決されます。
<uses-sdk Android:minSdkVersion="3"
Android:targetSdkVersion="10" />
Android CDDによると、オプションメニューを表示しないという新しい動作のカットオフはtargetSdkVersion> 10です。オプションは、targetSdkVersion <= 10のレガシーモードでアプリを実行するか、適応することです。アプリを新しいガイドラインに準拠させます(たとえば、アプリにメニューボタンを追加するか、アクションバーを使用します)。targetSdkVersionを増やすためにターゲットビルドバージョン(Eclipseのプロジェクトプロパティ)を増やす必要はないことに注意してください。