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) 


  • 相关阅读:
    JPG bufffer转Mat
    cv:Mat MFC上显示 BitMatToWnd
    opencv 版本修改
    2个多边形的关系判断和相交面积计算
    截取图像 opencv
    SQL Server 存储过程的分页方案比拼
    XP系统下数据库文件夹的权限设置
    关于23种设计模式的有趣见解
    一些编程的好习惯
    sql server 2000的数据库还原
  • 原文地址:https://www.cnblogs.com/over140/p/3017010.html
Copyright © 2011-2022 走看看