更改另一个MenuItem onClick

时间:2013-03-18 16:23:06

标签: java android

我的问题是我想将MenuItem中的图标从Visible更改为不可见,但是这个过程需要通过onOptionsItemSelected。如果我在菜单上调用,它会获取ClickItem的位置,而另一个需要隐藏。我还检查了定义MenuItem和findViewById,它们没有用,因为它没有视图。 让我向您展示我的代码的一部分,以使其更清晰:

@Override
public boolean onOptionsItemSelected(MenuItem menu) {
    switch (menu.getItemId()) {
    case R.id.menu_refresh:
        // Stuff
    case R.id.menu_settings:
        (Somehow point to R.id.menu_refresh).setVisible(false);
    }
    return super.onOptionsItemSelected(menu);
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您正在使用2.3样式菜单,则不要在onOptionsItemSelected中更改它。您可以在下次启动菜单时在onPrepareOptionsMenu中执行此操作(通过保存适合保存的任何数据)。

如果您有操作栏,则需要在活动上调用invalidateOptionsMenu以重新加载菜单,并在创建功能中执行禁用。

答案 1 :(得分:1)

我从docs读到的内容,针对此案例有一种特殊方法:onPrepareOptionsMenu(Menu menu)

  

准备要显示的屏幕标准选项菜单。每次显示菜单时都会调用此菜单。您可以使用此方法有效地启用/禁用项目或以其他方式动态修改内容。

所以这更像是这样:

@Override
public boolean onOptionsItemSelected(MenuItem menu) {
    switch (menu.getItemId()) {
    case R.id.menu_refresh:
        // Stuff
    case R.id.menu_settings:
        showRefresh = false;
        //Stuff
    }
    return super.onOptionsItemSelected(menu);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    menu.findItem(R.id.menu_refresh).setVisible(showRefresh);
    return super.onPrepareOptionsMenu(menu);
}