【发布时间】: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()。
【问题讨论】:
-
你能发布代码吗?听起来像是这里的操作顺序问题。