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

作者:caipital 时间:2021-08-17 03:00:22 

提出问题

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

Android Studio用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运行后小图标无法显示问题

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

来源:https://blog.csdn.net/caipital/article/details/105275142

标签:Android,Studio,genymotion
0
投稿

猜你喜欢

  • Hibernate实现批量添加数据的方法

    2023-11-29 08:53:56
  • 聊聊Java的switch为什么不支持long

    2023-08-24 17:35:14
  • Spring Boot实现图片上传功能

    2023-05-17 05:06:05
  • idea快速搭建spring cloud注册中心与注册的方法

    2023-03-09 17:40:35
  • java web监听器统计在线用户及人数

    2023-12-14 14:42:52
  • Android使用GestureOverlayView控件实现手势识别

    2023-03-02 08:46:26
  • Java.try catch finally 的执行顺序说明

    2022-07-06 00:30:25
  • 详解Android的两种事件处理机制

    2023-10-05 23:37:20
  • java抓取网页或文件中的邮箱号码

    2023-07-30 19:19:28
  • Java设计模式之单例和原型

    2023-11-29 04:14:18
  • Java 执行CMD命令或执行BAT批处理方式

    2022-10-15 03:57:38
  • springMVC自定义注解,用AOP来实现日志记录的方法

    2023-11-29 13:58:53
  • Hibernate一级缓存和二级缓存详解

    2023-11-16 11:58:11
  • java中Hashmap的get方法使用

    2023-10-29 13:10:05
  • Java 类与对象超基础讲解

    2023-06-12 00:03:22
  • 详解java中float与double的区别

    2021-09-12 11:04:47
  • 100行C#代码实现经典扫雷游戏

    2023-12-05 16:33:30
  • Java事件处理机制和适配器全面解析

    2021-10-23 04:19:32
  • 深入探讨Java多线程中的volatile变量

    2023-08-31 02:32:18
  • springboot static关键字真能提高Bean的优先级(厉害了)

    2023-03-10 07:39:12
  • asp之家 软件编程 m.aspxhome.com