Android 在启动时动态设置菜单项

Android set menu items dynamically at startup

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

您需要改用 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");