为什么Android Studio找不到我的资源?

28

Android Studio代码检查似乎找不到任何项目特定的资源。

例如,我的styles.xml文件。

<resources>
  <style name="AppBaseTheme" parent="Holo.Theme.Light.DarkActionBar">
  </style>

  <!-- Application theme. -->
  <style name="AppTheme" parent="AppBaseTheme">
  </style>
</resources>

标记第二个AppBaseTheme为红色并显示:"无法解析符号'AppBaseTheme'"。

应用程序可以编译和运行,但是我在资源上没有任何代码完成。检查似乎发现了ActionBarSherlock资源和HoloEverywhere资源(例如Holo.Theme.Light.DarkActionBar,自动完成也可以),但是。

应用程序(子)项目的build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.1'
    }
}
apply plugin: 'android'

dependencies {
    //compile files('libs/android-support-v4.jar')
    compile project(':abs-library')
    compile project(':he-library')
    compile project(':he-addons:slider')
    compile project(':he-addons:preferences')
    // using a custom repo here
    compile 'com.google.android:support-v4:r13'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 17
    }

    sourceSets {
        main {
            manifest.srcFile 'src/main/AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            // abs-res, he-res are symlinks to ../abs-library/res
            // and ../he-library/res 
            res.srcDirs = ['src/main/res', 'abs-res', 'he-res']
        }
    }
}
9个回答

58

我会尝试的第一件事是文件 > 作废缓存/重启 > 作废并重启

这解决了我在使用Android Studio时遇到的所有资源问题。


这对我没有用,但是我当时正在尝试让Eclipse导入工作... - user1300214
2
不需要重新启动,你只需要执行“Invalidate”操作,然后关闭并重新打开项目。这比重新启动快一些。 - 3k-

7
尝试使用工具栏中的“将项目与Gradle文件同步”按钮(绿色圆圈和蓝色箭头),这对我有用。
您还可以通过更改gradle中的某些内容来强制同步(同步按钮将弹出,您应该单击它),然后再恢复更改并再次单击“同步”。

4
你的样式定义有问题,你需要使用“@”调用定义的样式:
<resources>
  <style name="AppBaseTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
  </style>

  <!-- Application theme. -->
  <style name="AppTheme" parent="@style/AppBaseTheme">
  </style>
</resources>

@style/AppBaseTheme 在这里的意思是系统会调用你的 styles.xml 文件中名为 AppBaseTheme 的样式。


已经尝试过了,结果是一样的。另外请看截图,在 AndroidManifest.xml 中也有类似的错误,例如它找不到 @drawable/ic_launcher。它可以编译和运行,所以我认为代码是正确的,只是 Android Studio 的代码检查不知道那些资源。 - lukrop
清理后,在AS重新构建时,一切似乎都很正常,但是一旦(gradle)后台任务完成,检查就会再次启动并抱怨。 - lukrop
我修改了我的回答,我改变了你调用父主题Theme.Holo.Light.DarkActionBar的方式,你可以试一下。至于你的drawable错误,你是否检查过drawable是否在所有的drawable文件夹中? - Yoann Hercouet
尝试使用修改后的答案,但仍然没有成功。即使Theme.Holo.Light.DarkActionBar可以正常工作,它也无法找到@android:style/Theme.Holo.Light.DarkActionBar。我说它是“正常”的是因为这就是在HoloEverywhere演示中所做的方式。 - lukrop
抱歉,我无法提供更多帮助,因为我正在使用Eclipse,而这种问题通常需要对整个项目进行清理才能解决。至于Android Studio,我不知道可能的原因是什么... - Yoann Hercouet

4

看起来问题已经通过关闭项目,删除.idea文件夹和所有.iml文件,使用./gradlew clean清理并重新导入项目来解决。这次我在使用gradle模型导入时勾选了自动导入复选框。


3

请按照以下步骤操作:

1- 进入 Android Studio 菜单栏,点击 Build > Rebuild Project

2- 进入 Android Studio 菜单栏,点击 Build > Clean Project

3- 进入 Android Studio 菜单栏,点击 File > Invalidate Caches / Restart


1
我遇到了类似的问题,解决方法是增加以下数值:
targetSdkVersion 17 

to

targetSdkVersion 18

当您使用依赖项时,可能会出现这种情况,它们希望您使用特定的SdkVersion。在我的情况下,我有一个目标SdkVersion为25,但是appcompat要求至少使用版本26。


1

清理和重建:

尝试清理和重建您的项目。在Android Studio中,您可以通过选择“构建 > 清理项目”,然后选择“构建 > 重建项目”来完成。

希望这能解决您的问题 :) :) :)


1

我尝试了这个主题中的所有解决方案,最终像这样传递完整的包路径:

setContentView(com.example.dontknowwhat.R.layout.main_activity)

帮助了我。


0
我遇到了同样的问题。在我的情况下,是因为我有一个与应用模块相同的包名的模块,所以Android Studio将模块中的res文件夹识别为应用模块的资源。我通过以下方式解决了这个问题:
  • 将模块的包名更改为在中间添加一个.feature;
  • 创建一个"feature"文件夹,并为每个变体(main、debut、androidTest、test)复制包名,以使文件路径与包名匹配;
  • 修复每个导入;
  • 使缓存失效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接