关于 fragment重写onCreateOptionsMenu不执行问题

来源:互联网 发布:javascript eval 解密 编辑:程序博客网 时间:2024/05/19 12:11

这种情况大概有三种原因导致

1、就是在fragment中重写onCreateOptionsMenu必须要调用setHasOptionsMenu(true)方法

所以你需要在create方法创建的时候设置setHasOptionsMenu(true)

2、事件被其他的方法拦截或者屏蔽了menu菜单,从而导致onCreateOptionsMenu方法不执行

所以你需要去检查自己写的方法前后没有这种情况,一般情况都是在重写onKeyDown的方法被拦截了

修改改方法的返回即可

  1. / 监听返回键,退出程序  
  2.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
  3.         if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {  
  4.             wifiHotManager.closeAWifiHot();  
  5.             this.finish();  
  6.             return true;//①  
  7.         }  
  8.         return true;//②  
  9.     }  
比如这里第二个return true 这里,就会导致onCreateOptionsMenu不执行

3、主题原因导致,因为这个方法是Android会自动去寻找当前的ActionBar,但是我们有的时候自定义主题设置的parent是NoActionBar,所以这里系统回调的时候发现,既然是没有NoAcitonBar,自然也就不会去执行onCreateOptionsMenu方法

解决方法:修改含有ActionBar的主题,或者在Activity中设置setSupportActionBar();

private  void initToolbar() {    mToolbar.setTitle("");    ((HomePageActivity) getActivity()).setSupportActionBar(mToolbar);}
前两种借鉴与网上的这篇博客http://blog.csdn.net/jason0539/article/details/23625189

但是发现并不适用与自己的项目,仔细查找后发现是第三种情况


阅读全文
0 0