在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案

Posted zimengfang的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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 library中不能使用switch-case语句访问资源ID的原因分析及解决方案的主要内容,如果未能解决你的问题,请参考以下文章

swit开发Dictionary详细使用

按顺序附加异步响应 swit 3

Facebook 邀请好友不在 swit 4.0 上工作?

android library打包成aar形式供别的项目引用

理解安卓支持库(Android Support Library)

如何在闪亮的数据表中保存排序?