【问题标题】:Why isn't MenuInflater Responding?为什么 MenuInflater 没有响应?
【发布时间】:2012-10-17 23:15:23
【问题描述】:

我是 android 的菜鸟,我正在尝试根据用户选择来扩展两个不同的菜单。但是,菜单没有切换。无论用户选择什么,每次都会膨胀相同的菜单。我已经尝试使用各种参数检查了我的 if/else 语句,但菜单充气机仍然无法通过仅充气同一个菜单来正确响应。非常感谢任何帮助。

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    super.onCreateOptionsMenu(menu);
    popUpMenu = getMenuInflater();
    //popUpMenu.inflate(R.menu.cool_menu, menu);
    if(mypodcast==null){
        popUpMenu.inflate(R.menu.cool_menu, menu);
    }else  {
        popUpMenu.inflate(R.menu.podcast, menu);
    }
    return true;
}

【问题讨论】:

    标签: android if-statement menu menuitem inflate


    【解决方案1】:

    无论用户选择什么,每次都会膨胀相同的菜单。

    那是因为onCreateOptionsMenu()不会在每次打开菜单时调用,来自the documentation

    仅在第一次显示选项菜单时调用一次。要在每次显示时更新菜单,请参阅onPrepareOptionsMenu(Menu)

    如果您想更改菜单,您需要在onPrepareOptionsMenu() 中执行此操作。但是,我不相信每次调用 onPrepareOptionsMenu() 时您都可以或不应该增加新菜单。但是你可以结合这两个菜单,并在这个方法中根据你想要的改变每个菜单项的可见性。

    【讨论】:

    • 谢谢山姆。你刚刚教过我。
    • 很高兴我能教你,受过教育的声音有点刺耳。也许您只是将 ContextMenu 与 OptionsMenu 混淆了,因为每次打开菜单时都会调用 onCreateContextMenu() ...
    猜你喜欢
    • 2020-10-16
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多