Android的Switch语句case expressions must be constant expressions错误的解决方法

转场动画:揭露动画,多视图转场,activity之间转场 //主页,涵盖三个动画功能点击事件,分别跳转:startActivity(new Intent(this, XXXActivity.class)); //一、揭露动画:RevealActivity ,由 CheckBox+View+Button 组成 , // Animator animator = viewanimationutils.createcircularreceal() 静态方法。 //二、多视图转场:SceneActivity transition.xml FrameLayout.. 阅读详情

解决方案

今天在Adt-Eclipse-bundles导入一个之前写的Android项目时出现错误,具体提示是:“case expressions must be constant expressions”,所有错误都指向包含R.id的地方,形如:

switch(view.getId()) {
case R.id.button1:
    ...;
    break;
case R.id.button2:
    ...;
    break;
}
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

出现这种错误的原因是本工程被指定为Android library project,右键工程选择属性,出现如下图片。 
这里写图片描述
如图中红色所示,取消勾选”Is Library”即可编译通过。

不过话说回来,为啥Android Library工程会出现这种错误,要是项目本来就要指定为”Is Library”该如何处理。 
原因是对于普通的Android工程,生成的R文件的类声明如下所示:

public static final int main=0x7f030000;
 
  • 1

但是对于library工程,其声明会是:

public static int main=0x7f030000;
 
  • 1

由于缺少了final,不被认为是常量,从而导致switch…case编译出错。 
解决方案是将switch语句转化为if-else语句

  1. 对于eclipse环境,光标定位在switch语句上,按ctrl+1键然后选择“Convert ‘switch’ to ‘if-else’”。
  2. 对于Android Studio环境,光标定位在switch语句上,按Alt+Enter键然后选择“Replace ‘switch’ with ‘if’”。

其实这篇文章更像是翻译,Stack Overflow上有完整的说明。

参考文献

http://stackoverflow.com/questions/9092712/switch-case-statement-error-case-expressions-must-be-constant-expression


获取EditText上内容分行写入文件并读取 一、完成基本结构布局 二、根据id找到每个Button和EditText并设置按钮点击事件监听 三、使用editText1.getText().toString()语句获取到EditText内容并通过点击事件实现转换和运算 四、写一个文件辅助类,为后续将内容写入文件做准备 这里文件内容已基本写完,只需再完善主函数即可。 到这里已经是可以将EditText上内容写到文件里了,最后在利用点击事件读取出文件内容 如果想要获取多行EditText上内容并不覆盖写入文件里只.. 阅读详情

相关推荐

case expressions must be constant expressions(android:关于主工程和library project)

1、如何将一个android工程作为库工程(library project) library project是作为jar包被其它android工程使用的,首先它也是普通的android工程。然后: 1)在eclipse Package Explorer, 右键android工程选择Properties 2)选择Android,下拉右边的滚动条到最下面,选中”Is Library“ 3)点击...

暴走影视 644

Android 升级 ADT 之后报错之一 case语句

下面文章大意是指:在一般的Android项目中,R类的常量都是用final定义的,但ADT 14之后,如果在library 项目中,它会没有final关键字, 估计在新ADT中,资源文件会变成一个library...,   在switch语句的case中,如果使用 R.id.xxx 则会提示有问题,不允许非常量在case语句中。 Google提供的一个方法就是把它转化为if-else语句,

梦想有道,一个从梦中醒来的人。 1万+

SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

二维回波信号分析

zr2006_7的专栏 2万+

java中使用switch case报错case expressions must be constant expres

java中使用switch case报错case expressions must be constant expres

qq_44884300的博客 766

python数据处理与分析案例,python如何进行数据处理

大家好,本文将围绕基于python的数据处理案例展开说明,python数据处理与分析案例是一个很多人都想弄明白的事情,想搞清楚python如何进行数据处理需要先了解以下几个事情。大家好,小编来为大家解答以下问题,python数据处理案例步骤及其代码,python数据处理与分析教程,今天让我们一起来看看吧!哈喽~今天学习记录的是数据分析实训小案例。就用这个案例来好好巩固一下 python 数据分析三剑客。

a17348的博客 1240

【学习笔记-QGIS】 QGIS从零快速上手

安装文章参考:https://zhuanlan.zhihu.com/p/370633306。

Xcong_Zhu的博客 1万+

android switch语句case expressions must be constant expressions

今天无意中碰见了   case expressions must be constant expressions 的问题   写了一个 switch (v.getId()) { case R.id.ivTitleBtnRightImage: LuTaiService xxService = mFragmentCallBack.getService(); if (xxSer

提升心智 3万+

图像质量评估(5) -- 畸变(Distortion)

当图像中原本应该是直线的地方看起来发生了不自然的变形或扭曲时,我们称为图像畸变。有三种类型的镜头畸变:桶形畸变(后文使用英文barrel),枕形畸变(后文使用pincushion)和胡子畸变(后文使用英文wavef或mustache,这种畸变里包含了桶形畸变和枕形畸变)。有一个重要的点需要注意,根据透镜的类型以及透镜是否能够从相机中移除等条件不同,畸变会有不同的表现。 总的来说,旋转对称光学系统功能上会产生和物体几何相似的图形。但也有少数特殊的系统是例外,例如鱼眼镜头,这种镜头几何是故意设计为

vivo01的专栏 2万+

case expressions must be constant expressions报错Android

Android报错case expressions must be constant expressions

notahero的博客 1249

SpringBoot不用三方框架,怎么动态调度定时任务,ScheduledExecutorService 详解

Spring Boot 提供了强大的定时任务支持,无需依赖任何第三方框架,即可轻松实现可配置的定时任务。通过使用 `@EnableScheduling` 注解启用定时任务支持后,我们可以利用 `@Scheduled` 注解来定义定时任务的方法,这些方法可以在指定的时间间隔或特定时间点自动执行。 我们还可以通过集成 `ScheduledExecutorService` 来实现灵活的定时任务管理。`ScheduledExecutorService` 是 Java 标准库的一部分,能够以固定速率或延迟执行任务,

横竖撇折点 1940

英伟达NVIDIA数字IC后端笔试真题(ASIC Physical Design Engineer)

英伟达NVIDIA数字IC后端笔试真题(ASIC Physical Design方向)

weixin_37584728的博客 3930

解决case expressions must be constant expressions

Android Library工程写代码需要注意switch … case语句对资源id的引用,会引发编译错误:case expressions must be constant expressions。通常android工程生成的资源R.java,资源id声明如下:public static final int main=0x7f030004; 而对于library工程,资源id声明如下:publ

wyk86485481的博客 336

CTP Python API及Demo(利用Swig 封装)Windows版(6.6.1traderapi)

环境:visual studio2015、python3.9、 参考的是景色大神的教程自己制作,因为直接用它编译好的无法使用,遂自己编译。 从CTP官网上下载CTP API点击下载。这里用的版本是v6.6.1_P1_tradeapi,想使用不同的版本下载即可: 安装Swig软件,本文中所用的Swig是swigwin-4.0.2版本,点击下载。下载后解压,将swig路径添加到环境变量中。 安装python,注意要安装64位版本,将环境变量配置好。本文所用的是3.9版本。 通过Swig得到pyth.

ProgramVAE的博客 2544

android 中 switch 时出现case expressions must be constant expressions

今天无意中碰见了   case expressions must be constant expressions 的问题   写了一个 [java] view plaincopy switch (v.getId()) {   case R.id.button:             break;      default:  

shaaiwei521的专栏 878

紫光展锐面试——FPGA/IC设计面试面经案例总结

自我介绍;研究生的主要研究方向是什么?为什么想要应聘数字芯片相关的工作?简单介绍下数字IC设计流程。逻辑综合主要做什么?你有实际做过逻辑综合工作吗?你了解SS corner和FF corner吗?综合时应该使用哪个corner?综合时需要考虑hold吗?为什么?提高时钟频率对setup和hold有什么影响?为什么?hvt、rvt/svt、lvt有什么区别?c40、c50是指什么概念?有什么区别?你对EDA工具有过了解吗?

FPGA/MATLAB学习教程/源码/项目合作开发 1565

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android case expressions must be constant expressions

进行了一些操作之后,代码的switch块中出现了奇怪的提示: case expressions must be constant expressions 结合网络信息与自己的探索,找到了答案: 右击项目-属性-Android-Library区域,“Is Library”取消勾选。之前查其他问题的过程中不小心把它勾选了。 错误提示消失,问题解决。 参考:https://www.cn...

小鹰信息技术服务部 480

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android import library switch语句报错case expressions must be constant expressions

今天当我从github上下载一个工程,并把它的库文件导入eclipse中,发现switch语句报错case expressions must be constant expressions ; 解决方法是: 先把那个工程的properties->android->is Library勾选上的勾去掉 然后clean一下工程就好了; 因为这个工程我要作为另一个工程的库文件, 所以最后还是要继

浮华瑰梦 2001

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

如何解决 case expressions must be constant expressions

Android Library工程写代码需要注意switch … case语句对资源id的引用,会引发编译错误:case expressions must be constant expressions。 通常android工程生成的资源R.java,资源id声明如下: public static final int main=0x7f030004; 而对

专注Android开发 1933

Library Project里面使用Case语句判断R.id值报错。case expressions must be constant expressions...

原文地址:http://blog.csdn.net/wchinaw/article/details/7325641 在一般的Android项目里R里面的资源声明看起来是这样的: public static final int ... 但是在ADT14之后,声明是这样的 public static int .. 所有case语句换成if 就可以了 Non-constant F...

weixin_30722589的博客 476

java中使用switch case报错case expressions must be constant expressions

一、发现问题 private int CLICK_QUERY = 1; private int CLICK_RESET = 2; @Override public void onClick(View v) {  int tag = (Integer) v.getTag();  switch (tag)  {   case CLICK_QUERY:    query();

u013381651的博客 451
上一篇: 会声会影X8 一打开就提示Corel VideoStudio 已停止工作的解决办法
下一篇: 将Java Web项目打包成War文件部署到Tomcat服务器
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值