我的问题是如何防止每次片段恢复时我以编程方式创建的工具栏 menuItem(带有子菜单的菜单)被 xml 布局覆盖。我只想在第一次创建片段而不是在恢复片段时创建昂贵的工具栏菜单项。
我在 onCreateOptionsMenu() 中膨胀我的工具栏并存储菜单项的一个实例。
private MenuItem menuItem;
私人子菜单 expessiveSubmenu;
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_layout, menu);
menuItem= menu.findItem(R.id.menuItem);
}
当异步加载器完成时,menuItem 会被填充。
@Override
public void onLoadFinished(Loader<> loader, Data data) {
//Expensive call
expensiveSubmenu= makeExpensiveSubMenu(menuItem, data);
}
现在菜单已完全填充并在工具栏中可见,并且我还有一个子菜单实例。
因为每次恢复片段时都会调用 onCreateOptionsMenu(),所以我的菜单会被 xml 布局覆盖,我必须再次创建昂贵的子菜单。像 menu.addSubmenu(Menu) 这样的方法可以解决我的需求,但我找不到。任何想法,将不胜感激。