首页 > 解决方案 > 为什么在显示片段后调用 onCreateOptionMenu() 但不将项目添加到工具栏?

问题描述

我正在开发一个 android 应用程序,这个应用程序的底部导航有 4 个项目和 4 个片段。

这对我来说很重要,每个片段都必须在使用底部导航在它们之间切换后保存其状态。

所以我做了一个技巧,将所有片段添加到 fragmentTransaction 并隐藏所有片段,当点击底部导航项时,我显示其中一个并隐藏另一个。

问题是 onCreateOptionMenu 只在第一个片段中工作,在其他片段中它被调用但不改变我的工具栏......

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.pure_search_menu, menu);
    MenuItem menuItem = menu.findItem(R.id.city_action);
    // region get selected city and state
    SharedPreferences prefs = getActivity().getSharedPreferences("CityMap", MODE_PRIVATE);
    String restoredText = prefs.getString("name", null);
    if (restoredText != null) {
        menuItem.setTitle(restoredText);
    }
    // region get selected city and state
    menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem menuItem) {
            Intent intent = new Intent(getActivity(), ChooseStateActivity.class);
            startActivityForResult(intent, 2000);
            return false;
        }
    });
    super.onCreateOptionsMenu(menu, inflater);
}

我也将此添加到 onCreateView :

setHasOptionsMenu(true);

我很高兴看到你的回答。

标签: javaandroidandroid-activityfragmentandroid-toolbar

解决方案


推荐阅读