自定义Toolbar配置后出现旧ActionBar条目,如何清除?
解决自定义Toolbar显示旧ActionBar菜单条目的问题
嗨,这个问题我做项目的时候也碰到过,本质是调用setSupportActionBar(toolbar)后,系统会默认沿用当前Activity(或它的父类,比如你的MainActivity)里已有的菜单配置,咱们可以通过这几种方式解决:
方法一:彻底清空所有旧菜单条目
直接在当前Activity中重写onCreateOptionsMenu方法,不加载任何菜单内容,就能完全清除旧的ActionBar条目:
@Override public boolean onCreateOptionsMenu(Menu menu) { // 不加载任何菜单,返回true保证Toolbar的布局结构正常保留 return true; }
如果你的Activity继承自MainActivity,而MainActivity里实现了onCreateOptionsMenu,这个重写会直接覆盖父类的菜单加载逻辑,旧条目自然就不会显示了。
方法二:移除指定的旧菜单条目
如果只是想清除部分旧条目、保留其他菜单,可以在重写的onCreateOptionsMenu里定位对应条目并移除:
@Override public boolean onCreateOptionsMenu(Menu menu) { // 先加载父类的菜单(如果需要保留部分内容) super.onCreateOptionsMenu(menu); // 替换成你要清除的旧菜单条目的ID menu.removeItem(R.id.your_old_menu_item_id); return true; }
额外小检查
另外别忘了看看你的Toolbar布局文件里有没有通过app:menu属性绑定了旧的菜单资源,如果有的话,直接去掉这个属性也能解决问题。
内容的提问来源于stack exchange,提问作者Ali Habbash
相关产品推荐
相关产品推荐

