Android:错误 - 案例表达式必须是常量表达式

时间:2013-03-27 19:29:20

标签: java android switch-statement

我一直在开发应用程序,最近又买了一台新电脑。我必须将现有代码导入此计算机。现在,当我这样做时,我在构建路径中遇到一些错误,所以我修复了它们。但是现在,我在我的交换机和机箱中都遇到了错误。它说: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声明替换它们,但这将是一个很大的痛苦,以取代我的所有开关和案件,所以我想避免这一点。

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

4 个答案:

答案 0 :(得分:12)

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

您可以阅读here

答案 1 :(得分:0)

检查您正在使用的活动,即提供错误的活动, 并在其中查找这行代码

import android.R;

删除它! 干净利落 一切都应该有效

答案 2 :(得分:0)

自ADT 14 Changes in the tool chain a while back

以来,无法保证库中的ID不变

答案 3 :(得分:0)

这可能是您正在使用third_party库,为了使您快速开发应用程序并能够使用多个库,资源ID未定义为final,因此您必须使用if / else而不是开关/箱。