1

我一直在开发一个应用程序,最近买了一台新电脑。我不得不将我现有的代码导入这台计算机。现在,当我这样做时,我在构建路径中遇到了一些错误,所以我修复了它们。但是现在,我的 switch 和 case 在每种情况下都会出错。它说: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

4 回答 4

12

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

你可以在这里阅读。

于 2013-03-27T19:36:06.763 回答
0

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

import android.R;

删除它!执行干净,一切都应该工作

于 2013-03-27T19:33:47.187 回答
0

自从 ADT14 不久前工具链发生变化以来,无法保证 id 在库中保持不变

于 2013-03-27T19:38:02.887 回答
0

这可能是您正在使用第三方库,为了让您快速开发应用程序并能够使用多个库,资源 id 未定义为 final,因此您必须使用 if/else 而不是 switch/case .

于 2013-09-25T15:19:14.130 回答