按照http://developer.android.com/guide/topics/ui/menus.html的说明操作,我首先尝试创建一个xml
,为现有的Activity添加一个选项菜单<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
android:icon="@drawable/ic_new_game"
android:title="@string/new_game"
android:showAsAction="ifRoom"/>
<item android:id="@+id/help"
android:icon="@drawable/ic_help"
android:title="@string/help" />
</menu>
然后将活动中的菜单膨胀为
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.game_menu, menu);
return true;
}
显然这还不够。那么我在代码中缺少什么?我正在测试三星S5。
我的活动extends FragmentActivity
,如果重要的话。
答案 0 :(得分:1)
问题可能出在您的活动所使用的主题上。尝试使用包含操作栏的主题。我想,主题.Holo.ActionBar。
答案 1 :(得分:0)
我确定菜单在那里,但你无法看到它。据我所知,上面的代码没有问题。问题可能出在带有菜单键的手机和没有菜单键的手机上。对here,here和here以及here进行了无限的讨论。人们用来强制操作栏溢出菜单选项的黑客之一是
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if(menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception ex) {
// Ignore
}
将上述代码放在应用程序类的onCreate()
中。您正在使用S5,因此请尝试长按多任务键。这样就可以menu options in S5。