我有一个链接到API级别11的项目。当我在手机上运行它并点击菜单键时,我的菜单显示正常。当我在运行android 3.0.1的设备上运行时,菜单键不会出现在同一个活动中:
知道为什么菜单键不会显示此活动?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(...);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
menu.add(...);
return super.onPrepareOptionsMenu(menu);
}
此活动不应出现菜单键吗?
由于
-----更新--------------------
经过多次搜索,发现这个问题在同一个问题上: http://groups.google.com/group/android-developers/browse_thread/thread/c4b1b835060bd93f
Hackborn说,如果你没有目标sdk 11,将会显示菜单按钮。我正在做的事情。所以我现在有一个非常奇怪的设置:
<manifest>
<uses-sdk
android:minSdkVersion="5"
android:targetSdkVersion="10" />
<application
android:hardwareAccelerated="true" >
</application>
</manifest>
在我的项目属性中,我链接到sdk 11.我链接到sdk 11的原因是我可以在清单中使用“hardwareAccelerated = true”标志,如上所述。
总而言之,我在项目设置中链接到sdk 11,但在清单中设置了targetSdkVersion = 10。这是合法的吗?我认为他们必须匹配,
由于
答案 0 :(得分:5)
它是合法的,因为它可以工作,它在Android用户体验标准方面不合法。 :)
当您定位API 11时,系统栏中没有获得菜单按钮的原因是我们只显示它以支持旧版应用程序。新应用应使用操作栏显示您的活动选项。操作栏将由填充先前版本的选项菜单的相同机制填充。
目标API 11并确保您没有在主题或活动中禁用标题栏,默认情况下您将获得一个操作栏。菜单将显示在右上角。
答案 1 :(得分:1)
这是合法的:它会建立良好,也会很好。我不知道会出现任何问题:文档明确表示你可以定位一个低于你构建的版本。
答案 2 :(得分:1)
只需删除清单文件中的android:targetVersion
属性即可
并使用android:minSdkVersion="8"
minsdk版本应低于您的设备版本