切换case语句错误: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都用红色下划线。

回答:

在常规的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();

}

}

http://tools.android.com/tips/non-constant-

fields

您可以使用以下命令快速将switch语句转换为语句if-else

将光标移至switch关键字,然后按Ctrl+,1然后选择

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

中将光标移至switch关键字,然后按Alt+,Enter然后选择

将“ switch”替换为“ if”。

以上是 切换case语句错误:case表达式必须为常量表达式 的全部内容, 来源链接: utcz.com/qa/416580.html

回到顶部