我需要在启动时根据在启动时创建的一些变量更改操作栏中菜单项的标题。
但由于某种原因,我不能简单地这样做,因为菜单项需要时间来充气?
我该如何解决这个问题。
下面是我的尝试,但它会抛出java.lang.IndexOutOfBoundsException
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.map_fragment_action_menu, menu);
mOptionsMenu = menu;
mOptionsMenu.getItem(R.id.map_fragment_action_layers_0).setTitle("my title");
}
P.S。我正在使用片段,我也尝试用onCreateView()
方法设置标题,但仍然无效。
答案 0 :(得分:1)
您需要改为使用方法Menu#findItem()
。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.map_fragment_action_menu, menu);
mOptionsMenu = menu;
mOptionsMenu.findItem(R.id.map_fragment_action_layers_0).setTitle("my title");
}
Menu#getItem()
期望索引而不是菜单项的id。例如,如果此菜单项是菜单中的第一项,则使用
mOptionsMenu.getItem(0).setTitle("my title");