zoukankan      html  css  js  c++  java
  • 【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) 


  • 相关阅读:
    数组同时求极值
    约瑟夫环
    使用流迭代器, sort, co…
    Emacs 使用TAGS阅读源码
    Making Emacs Work For Me
    gnu libc 源码分享
    JavaSE 键盘事件类(KeyEvent)实现
    老子《道德经》第二十三章
    linux 系统没有默认的目录
    老子《首德经》第二十二章
  • 原文地址:https://www.cnblogs.com/over140/p/3017010.html
Copyright © 2011-2022 走看看