java - 为什么在显示片段后调用 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);
我很高兴看到你的回答。
解决方案
推荐阅读
- ios - iOS swift:从日历条目的 event.structuredLocation 获取位置
- javascript - Vue:更新方法内的同步属性
- javascript - I'm trying to add animation to my web page title using anime.js and jQuery, but it throws an error
- jenkins - 无法从 Jenkins 中的参数设置环境变量
- excel - 在单独的工作表 Excel VBA 上将多个命名范围打印为 1 个 PDF
- kubernetes - Kuberenetes 部署的应用程序无法执行 swagger API
- java - Android:x天后获取日期
- r - 提取每个 id -R 的特定评论之前的所有行
- python - 有一种快速的方法可以知道 Anaconda 中是否安装了软件包
- python - 改变数据框的形状