菜单没有正确充气

时间:2014-06-30 02:53:14

标签: android android-layout android-fragments menu android-studio

我已经尝试了几乎我在另一个堆栈溢出帖子中找到的所有内容,但我看不到找到这个bug的解决方案....

到目前为止,我已尝试重建项目,清理,重新制作项目,重新启动Android工作室,重新启​​动计算机并从手机中卸载应用程序。

我有两个非常相似的片段,但它们都有不同的菜单布局。

这里我有一个片段的菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.gabilheri.formulacalculator.main.MainActivity" >
<item
    android:id="@+id/delete"
    android:icon="@android:drawable/ic_menu_delete"
    android:title="Delete"
    android:orderInCategory="10"
    android:visible="true"
    app:showAsAction="always"
    />
<item android:id="@+id/action_settings"
      android:title="@string/action_settings"
      android:orderInCategory="100"
      app:showAsAction="never" />
</menu>

以下是菜单中的菜单代码:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.log_menu, menu);

}

这是我的另一个片段:

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.gabilheri.formulacalculator.main.MainActivity">
<item
    android:id="@+id/saveTheme"
    android:icon="@android:drawable/ic_menu_save"
    android:title="Save"
    android:orderInCategory="10"
    android:visible="true"
    app:showAsAction="always"
/>

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

以下是调用其他片段中菜单的代码:

 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.menu_themes, menu);

}

我真的无法理解为什么两个相同的代码片段都在一个片段中工作但在另一个片段中却没有...

1 个答案:

答案 0 :(得分:1)

请务必致电Fragment.setHasOptionsMenu(true)告知框架您的Fragment有一个选项菜单 - 如果您不打电话,那么onCreateOptionsMenu将永远不会被调用。

通常,您应该使用Fragment onCreate方法执行此操作。