resource IDS cannot be used in a switch statement in Android library

发现问题

在抽取lib的时候发现了这样一个问题,如图所示:


image.png
  1. 很正常的onClick事件的处理,使用的swtich语句,但是却报了resource IDS cannot be used in a switch statement in Android library这个问题,原因是...
  2. android项目的library module里不能使用资源ID作为switch语句的case值。
  3. 为什么呢?因为switch里的case值必须是常数,而在library module的R文件里ID的值不是final类型的,但是主module的R文件里的ID值是final类型的
  4. 所以主module里可以用资源ID作为case值而library module却不能。

解决方案

  1. 用if-else替换switch
  2. 快捷键:选中switch或者case语句,按Option+Return(Mac),Alt+Enter(Windows)
  3. 选择Replace ‘switch’ witch ‘if’即可


    image.png
  4. 这样就自动替换好啦。


    image.png

你可能感兴趣的:(resource IDS cannot be used in a switch statement in Android library)