在Android中使用invalidate刷新菜单

时间:2015-02-21 06:17:01

标签: android menuitem

我正在开发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第一次加载菜单但在运行时我想加载另一个菜单项。

1 个答案:

答案 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);
}

希望这会对你有所帮助。