Android Studio用genymotion运行后小图标无法显示问题
作者:caipital 时间:2021-08-17 03:00:22
提出问题
我做的是一个通讯录,用到了选项菜单,每一个菜单项左边我都添加了一个小图标,运行后发现没有显示出来。
解决方案
利用反射机制,根据对象来寻找类,再根据类来找方法,在显示菜单选项的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后将图标变为可见的。
修改之后
好了,到这里我们的图标就显示成功啦!
来源:https://blog.csdn.net/caipital/article/details/105275142
标签:Android,Studio,genymotion
0
投稿
猜你喜欢
Android View与Compose互相调用实例探究
2021-06-11 09:07:29
java编程abstract类和方法详解
2023-12-15 06:08:46
完美解决gson将Integer默认转换成Double的问题
2022-06-06 00:53:36
Java实现角色扮演游戏的示例代码
2023-03-31 19:41:45
全面分析c# LINQ
2023-10-25 16:35:16
Android列表实现(2)_游标列表案例讲解
2022-11-15 16:49:55
详解C#对XML、JSON等格式的解析
2022-06-04 22:45:50
java使用正则表达校验手机号码示例(手机号码正则)
2022-04-07 20:37:04
Java 确保某个Bean类被最后执行的几种实现方式
2021-09-28 09:53:49
C# WinForm编程获取文件物理路径的方法
2021-08-30 16:06:06
iOS新浪微博、腾讯微博分享功能实例
2023-06-16 09:15:53
Android中使用ViewStub实现布局优化
2023-11-28 21:16:18
举例讲解JDK注解的使用和自定义注解的方法
2022-06-29 17:34:52
浅谈JavaWeb中的web.xml配置部署描述符文件
2023-11-12 00:14:13
解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题
2021-08-06 20:52:42
MyBatis控制台显示SQL语句的方法实现
2021-10-18 04:10:00
Android测试方法总结
2022-07-27 08:02:41
Java分布式服务框架Dubbo介绍
2022-09-16 01:27:53
springboot 排除redis的自动配置操作
2023-01-20 04:25:47
C#实现IP摄像头的方法
2023-12-09 03:42:51