美文网首页
开发问题记录随笔之在Fragment中和在Activity中设置

开发问题记录随笔之在Fragment中和在Activity中设置

作者: 打工崽 | 来源:发表于2021-03-27 11:38 被阅读0次

    记录一个开发过程中的问题,在Ac和Fm中menu的下拉菜单有时icon会不可见,下面记录一下解决的方式

    Ac中

    //设置右上角menu菜单中的图标可见
        @Override
        public boolean onMenuOpened(int featureId, Menu menu) {
            if (menu != null) {
                if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) {
                    try {
                        Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                        method.setAccessible(true);
                        method.invoke(menu, true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
            return super.onMenuOpened(featureId, menu);
        }
    

    Fm中

    //fragment中设置menu的icon可显示
        private void setIconsVisible(Menu menu, boolean flag) {
            //判断menu是否为空
            if (menu != null) {
                try {
                    //如果不为空,就反射拿到menu的setOptionalIconsVisible方法
                    Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                    //暴力访问该方法
                    method.setAccessible(true);
                    //调用该方法显示icon
                    method.invoke(menu, flag);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
    //在这个方法里调用setIconVisible()
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            menu.clear();
            inflater.inflate(R.menu.event_fragment_menu, menu);
            setIconsVisible(menu,true);
            super.onCreateOptionsMenu(menu, inflater);
        }
    
    

    本质上都是通过反射拿图标噢,下次不要忘记了


    欢迎指正。

    相关文章

      网友评论

          本文标题:开发问题记录随笔之在Fragment中和在Activity中设置

          本文链接:https://www.haomeiwen.com/subject/xtdphltx.html