热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

AndroidStudio用genymotion运行后小图标无法显示问题

这篇文章主要介绍了AndroidStudio用genymotion运行后小图标无法显示的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

提出问题

我做的是一个通讯录,用到了选项菜单,每一个菜单项左边我都添加了一个小图标,运行后发现没有显示出来。

在这里插入图片描述

解决方案

利用反射机制,根据对象来寻找类,再根据类来找方法,在显示菜单选项的Activity中复写onMenuOpened方法:

@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 (NoSuchMethodException e) {
          e.printStackTrace();
        } catch (IllegalAccessException e) {
          e.printStackTrace();
        } catch (InvocationTargetException e) {
          e.printStackTrace();
        }
      }
    }
    return super.onMenuOpened(featureId, menu);
  }

我解释一下,因为设置图标显示这个方法是不可访问的(private),所以我们才会这么麻烦要用到反射机制来显现图标。

代码我也解释一下,我们用menu对象来反射MenuBuilder这个类,看这个类有没有。得到这个类以后,再通过这个类得到它的方法,这个方法叫setOptionalIconsVisible,这个是要自己打出来的,这个方法它是Boolean类型的。因为这个方法是私有的,所以我们要把不可访问设置为可访问的。最后我们调用method.invoke设置true后将图标变为可见的。

修改之后

在这里插入图片描述

好了,到这里我们的图标就显示成功啦!

总结

到此这篇关于Android Studio用genymotion运行后小图标无法显示怎办的文章就介绍到这了,更多相关Android Studio genymotion 小图标无法显示内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
author-avatar
mobiledu2502873157
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有