该应用运行良好。在具有硬选项菜单按钮的设备上,菜单显示,所以我知道它有效。在某些设备上,它会在右上角显示溢出按钮。
我的测试用例该设备是华硕Zenphone 5没有硬按钮,我也没有得到溢出按钮。但是,当我从按钮单击运行showOptionsMenu()命令时,它会显示选项菜单,并且所有相关事件都不会出现问题。
菜单 - Xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/select" android:title="Select" android:showAsAction="never"></item>
<item android:id="@+id/add_kid" android:title="Add" android:showAsAction="never"></item>
</menu>
onCreate&amp; onPrepare
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu1, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
if(!getCheckInStatus())
{
menu.setGroupVisible(R.id.group1,false);
}
else
{
menu.setGroupVisible(R.id.group1,true);
}
return super.onPrepareOptionsMenu(menu);
}
活动的清单值
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
.....
<activity
android:name="com.my.package.MyActivity"
android:configChanges="orientation|keyboard"
android:label="@string/app_name"
android:launchMode="singleInstance"
>
</activity>
我真的很感激这方面的任何帮助。
答案 0 :(得分:3)
我曾经在我的一些项目中遇到同样的问题。我按照下面给出的对我有用的步骤 1.将您的活动扩展到 ActionBarActivity
在 onCreate 方法
中调用以下代码private void makeActionOverflowMenuShown()
{
//devices with hardware menu button (e.g. Samsung Note) don't show action overflow menu
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
}
}
答案 1 :(得分:0)
在menu.xml中设置android:showAsAction="ifRoom"
,按钮会显示。
答案 2 :(得分:0)
试试这样。这对我有用..
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:icon="@drawable/ic_action_overflow"
android:id="@+id/moreItmes"
android:showAsAction="never"
android:title="@string/more">
<menu>
<item
android:id="@+id/select"
android:showAsAction="never"
android:title="@string/Select"/>
<item
android:id="@+id/add_kid"
android:showAsAction="never"
android:title="@string/Add"/>
</menu>
</item>
</menu>
答案 3 :(得分:0)
正如我在vinay的回答中评论的那样,原因是我正在调试由其他人编写的旧程序。似乎所有都是活动,但我已经更改了目标并编译为22.一旦我将Activity更改为ActionBarActivity,软件菜单按钮上的设备就会出现溢出。虽然那些带有硬选项的菜单按钮没有显示它。
答案 4 :(得分:-1)
Menu - Xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/select" android:title="Select" android:showAsAction="never"></item>
<item android:id="@+id/add_kid" android:title="Add" android:showAsAction="never"></item>
</menu>
在您的menu.xml中,您只使用showAsAction,因为它永远不会代表永远不要将此项目放在操作栏中。请参阅link了解更多信息