我需要在启动时根据启动时创建的几个变量更改操作栏中菜单项的标题。但出于某种原因,我不能简单地这么做,因为菜单项目可能需要时间来膨胀?我该如何解决这个问题。下面是我的尝试,但它抛出了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");
}
附言:我正在使用一个片段,我也试图用onCreateView()
方法设置标题,但仍然不起作用。
您需要使用方法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");