使用兼容性库在ICS中未显示选项菜单

我无法在使用android-support-v4.jar库的项目中的ICS片段中显示选项菜单。 我正在使用Galaxy Nexus手机进行测试。

我们没有使用操作栏,并且需要该应用程序与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; } // ... } 

清单文件中的目标操作系统版本:

  

从清单中删除android:targetSdkVersion="14"再次启用选项菜单按钮。

这是因为我在我的清单中指定了@android:style/Theme.Black.NoTitleBar的主题 – 使用14的android:targetSdkVersion,选项菜单被插入到操作栏菜单中,而不是选项菜单屏幕底部按钮栏中的按钮,主题是删除活动标题和操作栏。

操作栏可以删除 ,虽然我不确定这是否会解决问题,因为我还没有使它工作,所以它兼容版本2.2 – 4。

只需将android:targetSdkVersion从“14”更改为“10”(少于11),这个问题就解决了。

  

根据Android CDD,未显示选项菜单的新行为的截止值是targetSdkVersion> 10.您的选项是以传统模式运行您的应用,使用targetSdkVersion < = 10或使您的应用适应新指南(例如添加您应用中的菜单按钮或使用操作栏)。 请注意,您不必增加目标构建版本(eclipse中的项目属性)来增加targetSdkVersion。