2

我需要根据启动时创建的一些变量在启动时更改我的操作栏中的菜单项的标题。但由于某种原因,我不能简单地这样做,因为菜单项可能需要时间来膨胀?我该如何解决这个问题。下面是我的尝试,但它抛出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");
}

PS我正在使用片段,我也尝试在onCreateView()方法中设置标题但仍然不起作用。

4

1 回答 1

2

您需要改用该方法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");
于 2015-02-11T16:10:45.417 回答