switch…case结构中case后的表达式必须为常量表达式_switch case语句例子

switch…case结构中case后的表达式必须为常量表达式_switch case语句例子问题我的switch-case语句昨天完美无缺。但是当我今天早些时候运行代码时,eclipse给了我一个错误,用红色突出显示case语句并说:case表达式必须是常量表达式,它是常量我不知道发生了什么。这是我的代码如下:publicvoidonClick(Viewsrc){switch(src.getId()){caseR.id.playbtn:checkwificonnection()…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

问题

我的switch-case语句昨天完美无缺。但是当我今天早些时候运行代码时,eclipse给了我一个错误,用红色突出显示case语句并说:case表达式必须是常量表达式,它是常量我不知道发生了什么。这是我的代码如下:

public void onClick(View src)

{

switch(src.getId()) {

case R.id.playbtn:

checkwificonnection();

break;

case R.id.stopbtn:

Log.d(TAG, “onClick: stopping srvice”);

Playbutton.setImageResource(R.drawable.playbtn1);

Playbutton.setVisibility(0); //visible

Stopbutton.setVisibility(4); //invisible

stopService(new Intent(RakistaRadio.this,myservice.class));

clearstatusbar();

timer.cancel();

Title.setText(” “);

Artist.setText(” “);

break;

case R.id.btnmenu:

openOptionsMenu();

break;

}

}

所有R.id.int都用红色加下划线。

#1 热门回答(252 赞)

在常规的Android项目中,资源R类中的常量声明如下:

public static final int main=0x7f030004;

但是,从ADT 14开始,在库项目中,它们将被声明为:

public static int main=0x7f030004;

换句话说,常量在库项目中不是最终的。因此,你的代码将不再编译。

解决方案很简单:将switch语句转换为if-else语句。

public void onClick(View src)

{

int id = src.getId();

if (id == R.id.playbtn){

checkwificonnection();

} else if (id == R.id.stopbtn){

Log.d(TAG, “onClick: stopping srvice”);

Playbutton.setImageResource(R.drawable.playbtn1);

Playbutton.setVisibility(0); //visible

Stopbutton.setVisibility(4); //invisible

stopService(new Intent(RakistaRadio.this,myservice.class));

clearstatusbar();

timer.cancel();

Title.setText(” “);

Artist.setText(” “);

} else if (id == R.id.btnmenu){

openOptionsMenu();

}

}

在Eclipse中

将光标移动到switch关键字并按Ctrl1然后选择

将’switch’转换为’if-else’。

在Android Studio中

将光标移动到switch关键字并按Alt Alt Enterthen选择

将’switch’替换为’if’。

#2 热门回答(51 赞)

取消选中项目中的”Is Library”属性对我有用。

#3 热门回答(9 赞)

解决方案可以这样做:

只需将值赋给Integer

将变量设为最终

示例:

public static final int cameraRequestCode = 999;

希望这会帮助你。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187967.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Android控件 – TextView、Button、EditText、CompoundButton、CheckBox简介「建议收藏」

    Android控件 – TextView、Button、EditText、CompoundButton、CheckBox简介「建议收藏」TextViewTextView类是View的直接子类,用于单纯地显示一行或多行静态文本的视图。它继承View所有XML属性,并有着自己的XML属性。在XM布局中常用的属性:属性说明android:autoLink设置文本超链接样式,并点击跳向链接,值:none不匹配任何类型的文字(默认);web匹配URL地址,单击后打开浏览器显示地址;email匹配邮箱地址,单击后打

  • 行为识别笔记:improved dense trajectories算法(iDT算法)

    行为识别笔记:improved dense trajectories算法(iDT算法)iDT算法是行为识别领域中非常经典的一种算法,在深度学习应用于该领域前也是效果最好的算法。由INRIA的IEAR实验室于2013年发表于ICCV。目前基于深度学习的行为识别算法效果已经超过了iDT算法,但与iDT的结果做ensemble总还是能获得一些提升。所以这几年好多论文的最优效果都是“Ourmethod+iDT”的形式。此前由于项目原因,对iDT算法进行了很多研究和实验,故此处对其核心思路与

  • C# 字节数组截取

    C# 字节数组截取C#字节数组截取如:byte[]bt=newbyte[]{0,1,2,3,4,5,6,7,8,9};方法一截取位数规则1)截取2位长度的字节数组用BitConverter.ToInt16例如,从第2位开始截取2个字节则BitConverter.ToInt16(bt,2);2)截取4位长度的字节数组用BitConverter.ToInt32例如…

  • 数据库query用法_query方法

    数据库query用法_query方法1、以前写代码,总免不了要编写登录部分。在获取user的时候,只可能返回一个user实例,或者为null。以前使用以下方法实现:publicUserget(Stringname,Stringpassword){Sessionsession=HibernateUtil.getSessionFactory().openSession();String…

  • 开撕!赛门铁克抨击 Google 夸大其词误导用户「建议收藏」

    开撕!赛门铁克抨击 Google 夸大其词误导用户

  • 简述Activity生命周期「建议收藏」

    简述Activity生命周期「建议收藏」Activity显示方式Android是使用任务(Task)管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也 被称为返回栈。新活动启动进入栈,处于栈顶,当Back或finish()销毁一个活动时,栈顶的活动会出栈,前一个入栈的活动重新处于栈顶位置,显示给用户。活动状态运行状态:处于栈顶。暂停状态:不再处于栈顶但仍可见。(内存极低时系统会考虑回收这种活动)停止状态:不再处于栈顶,并且完全不可见。(系统会保存相应的状态和成员变量,但是这并不是完全可靠的,当其他地方需要内存时,处于停止状态

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号