2

我遇到的问题是,当我点击菜单按钮时,我的应用程序没有显示选项菜单。调试显示点击菜单按钮后没有调用 onCreateOptionsMenu(Menu menu) 方法。我有另一个具有相同菜单代码的应用程序,它在那里工作。所以现在我的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.app_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.options:
            Intent intent = new Intent(this, OptionsActivity.class);
            startActivityForResult(intent, 1);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }

}

在 res -> 菜单 -> app_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
   <item android:id="@+id/options" android:title="@string/options" /> 
</menu>

我不知道为什么在点击菜单按钮后不调用 onCreateOptionsMenu。我希望你们能帮助我。

编辑:我没有使用 Fragments 并且 onCreateOptionsMenu 真的从未被调用过。不是在应用程序开始时,也不是在我点击设备上的菜单按钮时。

4

4 回答 4

2

从您的帖子中不确定您正在使用 Fragments。如果是这样,您必须通过以下方式设置菜单选项

setHasOptionMenu(true);

从 Fragment 的 onCreate() 调用此方法,然后将显示选项菜单。

于 2013-10-08T08:38:37.193 回答
1

尝试在您的app_menu.xml文件中添加这些项目属性:

<item
    android:id="@+id/options"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/options"/>

options您必须在 Strings.xml 中声明一个字符串

于 2013-10-08T08:31:14.447 回答
1

它会在应用程序第一次启动时调用,而不是在选择菜单项后调用。

@Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
if (item.getItemId() == R.id.menuitem_id) {
}
return super.onMenuItemSelected(featureId, item);
}

选择后将调用此方法

于 2013-10-08T08:33:29.427 回答
-1

在 Manifest 文件中只需设置目标版本如下: android:minSdkVersion="8" android:targetSdkVersion="10"

于 2014-01-27T19:49:09.330 回答