在使用Toolbar的时候经常遇到menu混乱的情况,要不就是menu不显示,要不就是打开的Fragment显示的与Activity相同的menu,反正就是各种混乱,仅以此文记录本人遇到的问题以及个人见解,不喜勿喷。
目前解决了这两种问题(前提Toolbar控件在各自的Fragment中定义,而不在Activity中统一定义)
1. Fragment所在的Activity重写了OnCreateOpnionMenu函数,
如果依赖于此Activity的Fragment的Toolbar不需要显示menu菜单,那么直接将Toolbar作为一个独立的控件,不在设置toolbar的menu即可。
若依赖于此Activity的Fragment的Toolbar需要显示不同的menu菜单,那么需要在Fragment中重写menu菜单,步骤如下:
1). onCreate中增加setHasOptionsMenu(true);(该函数会让Fragment执行oncreateopnionMenu函数)
2). onCreateView中find Toolbar,然后((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
3). 重写onCreateOpniopMenu函数,重写时,需要先将menu菜单清空,否则会在Activity的menu菜单基础上增加菜单:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.ble_scan_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
2. Fragment所在的Activity没有重写OnCreateOpnionMenu,
那么也分为上面两种情况,第一种情况与1的相同,第二种情况下的执行步骤:
1). onCreate中增加setHasOptionsMenu(true);(该函数会让Fragment执行oncreateopnionMenu函数)
2). onCreateView中find Toolbar,然后((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
3).在onCreateView中执行mToolbar.inflateMenu(R.menu.history_menu);函数来增加menu菜单