在膨胀MenuButton时“类型菜单的预期资源”

时间:2014-08-19 20:27:07

标签: android android-fragments intellij-idea

所以我在我的布局目录中得到了这个XML文件,名为" actionbar_buttons.xml":

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_height="match_parent"
      android:layout_width="match_parent">
     <item android:id="@+id/action_settings"
           android:title="Settings">
     </item>
     <item android:id="@+id/action_settings2"
           android:title="fooo">
     </item>
 </menu>

在我的Fragment类中,我像这样调用inflate方法:

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

现在Intellij抱怨并告诉我:

Expected resource of type menu less... (Ctrl+F1) 
Reports two types of problems:
Supplying the wrong type of resource identifier. For example, when calling      Resources.getString(int id), you should be passing R.string.something, not R.drawable.something.
Passing the wrong constant to a method which expects one of a specific set of constants. For example, when calling View#setLayoutDirection, the parameter must be android.view.View.LAYOUT_DIRECTION_LTR or android.view.View.LAYOUT_DIRECTION_RTL.

代码确实有效。我对Intellij的这个警告感到恼火,而且我不确定我做错了什么。

3 个答案:

答案 0 :(得分:13)

只需将xml文件移动到

即可
  

“菜单”

资源目录而不是

  

“布局”

目录。然后更改行

inflater.inflate(R.layout.actionbar_buttons, menu);

使用

 inflater.inflate(R.menu.actionbar_buttons, menu);

答案 1 :(得分:3)

我认为应该是这样的:

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

答案 2 :(得分:0)

就我而言,我指的是使用R.id.my_resource代替R.layout.my_resource的资源。后来工作得很好 (问题在于布局而不是菜单)