【问题标题】:Changing Action Bar Menu Tab Label更改操作栏菜单选项卡标签
【发布时间】:2014-01-20 04:57:46
【问题描述】:

我想根据代码中变量的状态更改我的操作栏菜单选项卡标签之一。我发现以下内容描述了如何为此目的使用 onPrepareMenuOptions(),但我的问题是 onPrepareMenuOptions() 在我更改控制标签状态的变量后被调用。

How can I alter a MenuItem on the Options Menu on Android?

尽我所能,我有一个 dialogFragment,当用户选择相关的操作栏项目时,它会出现。该对话框允许用户更改参数,并且根据选择的值,我想更改 AB 项目标签(但不是与 AB 项目或它启动的 dialogFragment 关联的代码。

我应该做些什么(也许在对话框的 onDismiss() 方法中)来强制我的应用程序调用 onPrepareMenuOptions()??

应 Nate 的请求,我的活动有以下代码:

public boolean onCreateOptionsMenu (Menu menu)
{
    getMenuInflater().inflate (R.menu.app_menu, menu);

    this.abMenu = menu;
    this.varTab = abMenu.findItem (R.id.menu_varTab);
        //  Need to be able to change this label

    return super.onCreateOptionsMenu (menu);
}

@Override
public boolean onPrepareOptionsMenu (Menu menu)
{
    varTab.setTitle (0 == importantVariable
        ?   ("Set Var")
        :   ("Set Var\n" + String.valueOf (importantVariable)) + " units");

    return super.onPrepareOptionsMenu (menu);
}

根据好的建议,我将 act.invalidateOptionsMenu() 添加到与此菜单项关联的 dialogFragment 的 onDismiss() 方法中,现在应该调用 onPrepareOptionsMenu()。

【问题讨论】:

  • 你能发布代码吗?听起来像是这里的操作顺序问题。

标签: android android-actionbar


【解决方案1】:

在 Android 2.3.x 及更低版本上,每次用户打开选项菜单(按下菜单按钮)时,系统都会调用 onPrepareOptionsMenu()。

在 Android 3.0 及更高版本上,当菜单项显示在操作栏中时,选项菜单被视为始终处于打开状态。当一个事件发生,你想执行一个菜单更新时,你必须调用invalidateOptionsMenu()来请求系统调用onPrepareOptionsMenu()。

【讨论】:

  • 我使用的是 Android 4.0 -- 可能应该提到这一点。一旦我将 invalidateOptionsMenu() 添加到我的对话框的 onDismiss() 方法中,它就像一个魅力。谢谢。
【解决方案2】:

我相信 - 如果您在操作栏中使用标签,那么这样的东西应该可以工作:

bar.getTabAt(0).setText("Some new Sequence");

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多