如何通过oncreate()方法更改菜单栏项

时间:2016-03-30 13:28:14

标签: android menubar

在这里,我有大学名单。我使用menu bar Favourite_icon来关注特定的大学。然后Favourite_icon更改为Favourite_icon1当其他时间查看大学时,菜单栏Favourite_icon应该为Favourite_icon1。这样我就可以通过使用服务器API来检查学院是否已经受到青睐了。那么如何从oncreate()方法设置菜单栏图标。

2 个答案:

答案 0 :(得分:1)

如果您指的是Android菜单栏,则不应尝试在onCreate()中更改它,因为它尚未实例化,并且始终会抛出NullPointerException

如果您正在等待API响应以查找收藏夹,则需要创建一个本地菜单变量来访问它。

Menu myMenu;

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    myMenu = menu;
    return super.onPrepareOptionsMenu(menu);
}

然后,无论您的服务器API的回调方法应该是这样的:

void callback(boolean favorite) {
    if (favorite) {
        myMenu.findItem(R.id.myMenuItem).setIcon(R.drawable.Favourite_icon1);
    }
}

答案 1 :(得分:0)

这样的事情:

    @Override
    protected void onCreate (Bundle savedInstanceState){
        ...
        isSomethingInMenu = true;
        invalidateOptionsMenu();
        ...
    }

    @Override
    public boolean onCreateOptionsMenu (Menu menu){
        getMenuInflater().inflate(R.menu.menu, menu);
        menu.findItem(R.id.action_something).setVisible(isSomethingInMenu);
        ...
    }