【在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案】归志宁无五亩园,读书本意在元元。这篇文章主要讲述在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案相关的知识,希望能为你提供帮助。
报错是因为case分支后面跟的参数必须是常数,也就是说library中的R.java的资源ID不是常数,
public static final class animator {
public static int design_appbar_state_list_animator = 0x7f020001;
}
public static final class array {
public static int card_tabList = 0x7f030001;
}
public static final class attr {
public static int actionBarDivider = 0x7f040001;
public static int actionBarItemBackground = 0x7f040002;
public static int actionBarPopupTheme = 0x7f040003;
...}
如上面所示每一个资源ID都没有被声明为final
项目下的R.java的资源ID如下
public static final class animator {
public static final int design_appbar_state_list_animator=0x7f020000;
}
public static final class array {
public static final int card_tabList=0x7f030000;
public static final int tab_list=0x7f030001;
}
查了很多资料,除了用if-else替换没有其他解决方案[Facepalm]
推荐阅读
- 玩转Android monkey之monkey是啥(monkey=猴子?)
- Qt自定义弹窗屏蔽父窗口(QWidget设置setWindowModality(Qt::ApplicationModal);以后再show)
- Android APK反编译
- Android 发送本地广播 以及创建广播接收器
- Android Architecture Components--项目实战
- SQL 关于apply的两种形式cross apply 和 outer apply
- 可靠的可扩展的可维护的数据系统 ------《Designing Data-Intensive Applications》读书笔记1
- Android开发之漫漫长途 番外篇——自定义View的各种姿势2
- 关于Unity打包Android发布流程