在OnCreateOptions菜单()之后,如何在Android中添加菜单项

在OnCreateOptions菜单()之后,如何在Android中添加菜单项,android,menu,Android,Menu,我遇到了一个严重的问题。我想在用户成功登录后添加菜单项 开始时,我使用以下方法使其可用 下面的代码现在不起作用,我提到它是为了说明我的想法 Private Menu mymenu; public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub super.onCreateOptionsMenu(menu); mymenu=menu;

我遇到了一个严重的问题。我想在用户成功登录后添加菜单项

开始时,我使用以下方法使其可用

下面的代码现在不起作用,我提到它是为了说明我的想法

Private Menu mymenu;
 public boolean onCreateOptionsMenu(Menu menu) {

        // TODO Auto-generated method stub

        super.onCreateOptionsMenu(menu);
        mymenu=menu;
        return super.onCreateOptionsMenu(menu);
 } 

public void process(){

        MenuInflater inflater=this.getMenuInflater();
        inflater.inflate(R.menu.my_menu,mymenu);

}
似乎这个想法在我记忆中起了作用。但在做了一些我记不起来的事情后,它就不起作用了

调试之后,我发现这是因为mymenu=null

我猜有一种方法可以设置mymenu=menu


有人能帮忙吗?

有一种方法,可以覆盖并动态更改菜单。

有一种方法,可以覆盖并动态更改菜单。

该代码可能存在的问题是调用super两次

要执行所需操作,可以覆盖OnPrepareOptions菜单,并将所有不需要的菜单项上的可见性设置为hidden,直到您的状态达到要添加它的程度

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem menuItem = menu.findItem(R.id.<id of menuitem>);
    menuItem.setVisible(<condition>);
    return true;
}
只需使用OnCreateOptions菜单中的标准代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.<id of menu with all items you'll need>, menu);
    return true;
}

该代码可能存在的问题是调用super两次

要执行所需操作,可以覆盖OnPrepareOptions菜单,并将所有不需要的菜单项上的可见性设置为hidden,直到您的状态达到要添加它的程度

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem menuItem = menu.findItem(R.id.<id of menuitem>);
    menuItem.setVisible(<condition>);
    return true;
}
只需使用OnCreateOptions菜单中的标准代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.<id of menu with all items you'll need>, menu);
    return true;
}

是的,这很有用。但我仍然想知道这不起作用的原因。无论如何,非常感谢:您可以尝试和测试的是,默认情况下添加所有可能的菜单项,在这个方法中,根据您的需求设置不需要的项的可见性。太好了。那是另一种方式。谢谢buddyYeah,这很有用。但我仍然想知道这不起作用的原因。无论如何,非常感谢:您可以尝试和测试的是,默认情况下添加所有可能的菜单项,在这个方法中,根据您的需求设置不需要的项的可见性。太好了。那是另一种方式。谢谢你,伙计