这种情况大概有三种原因导致
1、就是在fragment中重写onCreateOptionsMenu必须要调用setHasOptionsMenu(true)方法
所以你需要在create方法创建的时候设置setHasOptionsMenu(true)
2、事件被其他的方法拦截或者屏蔽了menu菜单,从而导致onCreateOptionsMenu方法不执行
所以你需要去检查自己写的方法前后没有这种情况,一般情况都是在重写onKeyDown的方法被拦截了
修改改方法的返回即可
- / 监听返回键,退出程序
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
- wifiHotManager.closeAWifiHot();
- this.finish();
- return true;//①
- }
- return true;//②
- }
3、主题原因导致,因为这个方法是Android会自动去寻找当前的ActionBar,但是我们有的时候自定义主题设置的parent是NoActionBar,所以这里系统回调的时候发现,既然是没有NoAcitonBar,自然也就不会去执行onCreateOptionsMenu方法
解决方法:修改含有ActionBar的主题,或者在Activity中设置setSupportActionBar();
private void initToolbar() { mToolbar.setTitle(""); ((HomePageActivity) getActivity()).setSupportActionBar(mToolbar); }前两种借鉴与网上的这篇博客http://blog.youkuaiyun.com/jason0539/article/details/23625189
但是发现并不适用与自己的项目,仔细查找后发现是第三种情况