在 Android 中使用无效刷新菜单

Refresh Menu with invalidate in Android

我正在开发 Android 应用程序,我想在 运行 时间刷新我的菜单。例如,如果在开始时我的菜单类似于 menu1.xml,那么在从服务器获得任何结果后,例如 'Yes',我想用 menu2.xml.

刷新它

我想为此使用无效功能,但我无法刷新我的菜单项。我的代码如下:

@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 时加载菜单,但在 运行 时我想加载另一个菜单项。

一次尝试如下

@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);
}

希望对您有所帮助。