问题 IntelliJ / Android - >案例R.id.viewId上的“java:constant expression required”


当我尝试在IntelliJ中构建我的Android项目时,我会在每个switch语句中获得错误,这些语句使用了Id的R.java。

例:

switch (item.getItemId()) {

  case android.R.id.home:
    NavUtils.navigateUpTo(this, DashboardActivity.upIntent(this));
    return true;

  case R.id.orders_options_add:
    handleAddItem();
    return true;

  case R.id.orders_options_reorder:
    handleReorder();
    finish();
    return true;
}

有谁知道如何解决这个问题?


6993
2018-03-06 12:38


起源

检查一下,你没有在课堂上发现任何错误的R-imports。 - kaderud


答案:


自ADT版本14以来,资源ID不是库项目中的常量,因此您无法在switch语句中使用它们。只是用 if () {} else if () {} ... 代替。

您可以找到更多详细信息 这里


10
2018-03-06 12:45



这仅适用于您自己的应用程序未创建的资源。 - keyboardsurfer
nope,它适用于在库项目中创建的任何资源 - Vladimir Mironov
你是 错误。并且它明确地在该链接中多次说明它只与a相关 图书馆 项目。 - kaderud