我正在开发Android应用程序,我想在运行时刷新我的菜单。例如,如果在开始我的菜单中就像menu1.xml
那么在从服务器获取任何结果例如“是”之后我想用menu2.xml
刷新它。
我想为此使用invalidate函数,但我无法刷新我的菜单项。我的代码如下:
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
if (showAcceptButton==true) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu1, menu);
return true;
}if (Constants.showAcceptedButton = true) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu2, menu);
return true;
}
if(showNormalMenu==true){
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu3, menu);
return true;
}
return true;
}
在onCreate第一次加载菜单但在运行时我想加载另一个菜单项。
答案 0 :(得分:1)
尝试如下
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
return super.onPrepareOptionsMenu(menu);
}
它将提供现有菜单对象,您可以从中添加或删除菜单项。
<强>更新强>
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.clear();
if (showAcceptButton==true) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu1, menu);
return true;
}if (Constants.showAcceptedButton = true) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu2, menu);
return true;
}
if(showNormalMenu==true){
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu3, menu);
return true;
}
return super.onPrepareOptionsMenu(menu);
}
希望这会对你有所帮助。