Android developerAndroid开发经验谈Android开发

关于在Fragment中设置Menu无效问题

2017-10-27  本文已影响76人  T9的第三个三角

关于在Fragment中设置Menu,本身简单,但是其中有容易忽略的几个坑,需要注意:
先来设置个Menu:

 @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_main, menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_settings:

                break;
            default:
                break;
        }
        return super.onOptionsItemSelected(item);
    }

代码简答, 寥寥几行,但是Menu并没有显示,可能问题为:

 事件被其他的方法拦截或者屏蔽了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;//②  
    }  
    private void initToolbar() {
        toolbar.setTitle("");
        ((MainActivity) getActivity()).setSupportActionBar(toolbar);  //为Fragment所在Activity设置ActionBar
    }

一般设置Menu无效,都是因为这三个原因引起,可根据具体情况分析,做出调整

来源:

关于 fragment重写onCreateOptionsMenu不执行问题

上一篇 下一篇

猜你喜欢

热点阅读