我正在尝试在继承Fragment
类的类中夸大菜单。
这是我的OnCreateOptionsMenu()
方法 -
@Override
public boolean OnCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.forecastfragment, menu) ;
return true;
}
这会引发以下错误:
无法解析方法'getMenuInflater()'
我试过了:
MenuInflater inflater = getActivity().getMenuInflater();
但Android Studio以红色突出显示@Override
并声明:
Method不会覆盖超类
中的方法
我还尝试在同一个类中创建getMenuInflater
方法并让它返回new MenuInflater(this)
public MenuInflater getMenuInflater() {
return new MenuInflater(this);
}
但随后会抛出以下错误:
错误:不兼容的类型:ForecastFragment无法转换为 上下文
错误:方法不会覆盖或实现超类型
中的方法
我该怎么办?
答案 0 :(得分:13)
onCreateOptionsMenu
的签名看起来不正确。看一下文档here
看看这段代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);//Make sure you have this line of code.
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Add your menu entries here
super.onCreateOptionsMenu(menu, inflater);
}
答案 1 :(得分:1)
使用此代码:
set(gca,'XTickLabel',{' '})
set(gca,'YTickLabel',{' '})
其中forecastID是菜单forcastfragment.xml中项目的ID。
同时在@Override
public boolean OnCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.forecastfragment, menu) ;
final MenuItem item = menu.findItem(R.id.forecastID);
}
中添加setHasOptionsMenu(true);
,以便片段调用该方法。
作为一方,标准做法是在菜单文件名中加入“menu”一词,例如'forecastfragment_menu.xml'。它避免了混淆。
答案 2 :(得分:1)
您必须以这种方式使用它:
@Override
public boolean OnCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.forecastfragment, menu);
return true;
}
答案 3 :(得分:1)
在您的片段类中添加:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.[IDMENU], menu) ;
}
[IDMENU]是菜单的XML名称。
接下来,您需要在内部添加onCreate或onCreateView方法:
setHasOptionsMenu(true);