android 不能试用switch

在Android Library中,switch-case语句无法用于资源ID,因为library的R.java中的资源ID不是常量。为解决此问题,需将switch-case转换为if-else-if语句。库项目可以包含源代码和资源,但不能直接编译成APK或导出为JAR,且资源ID在应用和库中冲突时,应用的资源会优先被使用。
摘要由CSDN通过智能技术生成

Android Library中switch-case中调用资源id的问题

问题描述:

  当我们在Android依赖库中使用switch-case语句访问资源ID时会报如下图所示的错误。
      library error

分析原因:

报的错误是case分支后面跟的参数必须是常数,换句话说出现这个问题的原因是Android library中生成的R.java中的资源ID不是常数:

library error

  打开library中的R.java,发现确实如此,每一个资源ID都没有被声明为final:

library R.java

library R.java

  但是当你打开你的主工程,在onClick、onItemClick等各种回调方法中是可以通过switch-case语句来访问资源ID的,因为在主工程的R.java中资源ID都被声明为了final常量。

  project中能够通过switch-case语句正常引用资源ID:

project right

project right

  project中的R.java:

project R.java

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值