2013-03-27 72 views
1

我一直在研究一个应用程序,并且最近有一台新电脑。我不得不将现有的代码导入到这台计算机中。现在,当我这样做时,我在构建路径中出现了一些错误,所以我修复了它们。但是现在,在我的开关和情况下,我都会遇到错误。它说:case表达式必须是常量表达式。Android:Error - Case表达式必须是常量表达式

我的代码示例:

case R.id.b3: 
    a.putExtra("Green", "green"); 
    startActivity(a); 
    break; 
case R.id.b4: 
    a.putExtra("Pink", "pink"); 
    startActivity(a); 
    break; 

我上按钮的ID错误。在我使用的其他电脑上一切正常,所以我不知道为什么我现在得到这个错误。我做了谷歌它,我读我应该用一个if else语句替换它们,但这将是一个重大的痛苦,以取代我所有的开关和案件,所以我想避免这种情况。

为什么在我导入的代码中发生这种情况?

+0

您是否清理过该项目。 – 2013-03-27 19:30:27

+0

是的,我有..... – user2182912 2013-03-27 19:33:18

回答

12

当资源在库项目中定义时会发生这种情况。我相信Android插件的一个较新版本需要基于对库项目编译方式的更改。 if-else是必要的。 IDE将自动完成。如果突出显示switch关键字并按下ctrl-1,则应该可以选择自动进行更改。您可以阅读关于它here

+0

没关系。我读F1而不是1.谢谢!它工作完美。 – user2182912 2013-03-27 19:47:45

+0

你救了我的一天! – 2014-10-17 10:20:23

0

检查你正在使用的活动,就是那个让你的错误, 查查这行代码在它

import android.R; 

删除它! 执行清洁 ,一切都应该工作

0

这可能是你使用的是THIRD_PARTY库,以使您开发的应用程序的快速,并能使用一个以上的图书馆,资源ID没有定义为final,所以你必须使用if/else而不是switch/case。

+0

这是从六个月前的接受答案上面添加什么值? – pamphlet 2013-09-25 15:41:12