0

我必须动态更改onCreateOptionsMenu项目。我正在从 Web 服务中获取项目。但问题是该服务onCreate()在一个AsyncTask类中被调用,因此在来自服务的数据到达之前onCreateOptionsMenu被调用并返回NullPointerException

这是我调用该函数的方式:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

    // super.onCreateOptionsMenu(menu);

    getMenuInflater().inflate(R.menu.action_bar_menu, menu);
    item = menu.findItem(R.id.CurrentUser);
    UserName = con.getResources().getString(R.string.WelcomeUser) + " "
            + UserName + "!";
    item.setTitle(UserName);

    if (IsCorporateAccount) {
        menu.getItem(6).setVisible(true);
    } else {
        menu.getItem(6).setVisible(false);
    }

    objGetBalanceDetails.CreateMenu(menu);

    // Menu menu1 = null;
    // menu1.findItem(R.id.Home).setVisible(false);
    return true;
}
4

1 回答 1

0

你可以在菜单中抓取onCreateOptions菜单

private Menu mMenu;

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.myMenu, menu);
    mMenu = menu;
    }

在您的菜单中进行更改后,即添加或删除项目,您可以调用invalidateOptionsMenu();(支持 api > 11)来更新您的菜单。

于 2014-04-28T05:28:13.647 回答