所以我在我的布局目录中得到了这个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的这个警告感到恼火,而且我不确定我做错了什么。
答案 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
的资源。后来工作得很好
(问题在于布局而不是菜单)