• 【Android】嵌套Fragment无法接收onCreateOptionsMenu事件的问题



    前言

    嵌套的二级Fragment无法接收onCreateOptionsMenu事件的问题,设置了setHasOptionsMenu也不管用

    声明
      欢迎转载,但请保留文章原始出处:)
        博客园:http://www.cnblogs.com

        农民伯伯: http://www.cnblogs.com/over140/ 

    正文

    补充说明:

    如果通过缓存Fragment手动调用二级Fragment,可能会出现莫名其妙的问题,比如更多Menu不显示。

    解决办法:

    在一级Fragment中添加Menu,可以在一级onOptionsItemSelected中手动调用二级的此方法来处理相关事件。

    示例代码:

        @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            switch (getSelectedPosition()) {
            case 1:
                inflater.inflate(R.menu.menu1, menu);
                break;
            case 2:
                inflater.inflate(R.menu.menu2, menu);
                break;
            case 0:
            default:
                inflater.inflate(R.menu.menu3, menu);
                break;
            }
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            Fragment fragment = getFragmentByPosition(getSelectedPosition());
            if (fragment != null)
                fragment.onOptionsItemSelected(item);
            return super.onOptionsItemSelected(item);
        }

    代码说明:

    示例代码是一级Fragment,getFragmentByPosition返回的是二级Fragment。

    相关文章:

    【Andorid X 项目笔记】嵌套Fragment的使用(5) 


  • 相关阅读:
    javascript语句语义大全(6)
    javascript语句语义大全(5)
    javascript语句语义大全(4)
    javascript语句语义大全(3)
    javascript语句语义大全(2)
    javascript语句语义大全(1)
    javascript基础知识(1)
    模版引擎Handlebars语法(1)
    一个完整的项目中,需要的基本gulp
    HTML5新特性总览
  • 原文地址:https://www.cnblogs.com/over140/p/3017010.html
Copyright © 2020-2023  润新知