避免在片段中重新创建以编程方式创建的menuitem

时间:2016-02-05 15:19:53

标签: android android-fragments android-toolbar android-menu oncreateoptionsmenu

我的问题是,每次片段恢复时,如何防止以编程方式创建的工具栏menuItem(带子菜单的菜单)被xml布局覆盖。 我想创建我的昂贵的工具栏menuitem只在第一次创建片段而不是恢复时。

我在onCreateOptionsMenu()中填充我的工具栏并存储菜单项的实例。

private MenuItem menuItem;

私人SubMenu 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()被称为evertime,片段将恢复,我的菜单被xml布局覆盖,我必须再次创建昂贵的子菜单。像menu.addSubmenu(菜单)这样的方法可以解决我的需求,但我找不到。任何想法都将不胜感激。

0 个答案:

没有答案