大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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账号...