【问题标题】:Android Studio cannot resolve symbol Theme.AppCompat.Light.DarkActionBar / cannot resolve "R"Android Studio 无法解析符号 Theme.AppCompat.Light.DarkActionBar / 无法解析“R”
【发布时间】:2017-08-07 14:14:11
【问题描述】:

我还没有找到正确的答案。这是我第一个使用 Android Studio 的项目,我几乎失去了耐心 :)。 Theme.AppCompat.Light.DarkActionBar 标记为红色。

这是我的styles.xml:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
</style>

</resources>

这是我的 build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
    applicationId "helloworld.spsa3.helloworldproject"
    minSdkVersion 10
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}


dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
testCompile 'junit:junit:4.12'
}

最后这是我的第二个问题,我确信它们是相关的。 “R”也无法解析。 “R”也标记为红色。

这是我的 MainActivityFragment() 类:

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class MainActivityFragment extends Fragment{

public MainActivityFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,

 Bundle savedInstanceState) {

    return inflater.inflate(R.layout.fragment_main, container, false);

}
}

有什么想法吗?

【问题讨论】:

  • 这意味着您的布局文件或可绘制对象中存在一些编译问题。基本上 res 文件夹中的任何内容都可能导致 R 无法编译
  • 尝试构建 -> 清理项目
  • @kapsym 所以你知道如何解决这个问题。你有没有遇到过同样的问题?
  • @SaurabhThorat 这不起作用
  • 检查您的资源文件名中是否存在无效字符。如果 any 有 single 无效字符,您将无法编译 R.java。

标签: android android-studio android-gradle-plugin build.gradle


【解决方案1】:

R.java 是一个生成的文件。如果你遇到这样的错误

这是因为R.java 生成失败。这可能是由错误的文件名或资源文件中的错误内容引起的。

在 Android Studio 中查找“消息”视图(或通过菜单 View -&gt; Tool Windows -&gt; Messages 打开)。当您对项目进行干净的重建时,您应该会看到与为什么无法生成 R.java 相关的错误。对于我上面的示例,错误消息是:

/StackOverflow/app/src/main/res/drawable/illegal-name.xml

错误:“-”不是有效的基于文件的资源名称字符:基于文件的资源名称只能包含小写 a-z、0-9 或下划线

所以你可以看到我的illegal-name.xml 资源不能有连字符,应该改成legal_name.xml。

或者也许我在某个地方搞砸了我的 XML 标签。也许在我的一个字符串资源中我没有正确关闭标签:

<string name="label_register">REGISTER<string>

现在“消息”视图向我显示了这个错误:

/StackOverflow/app/src/main/res/values/strings.xml

错误:元素类型“字符串”必须以匹配的结束标记“&lt;/string&gt;”终止。

按照“消息”视图中的错误查找问题。

【讨论】:

  • 嘿,本,谢谢。所以我进行了 gradle 同步,然后在消息中显示了一些错误,例如:“无法解析:javax.inject:javax.inject:1”。文件“build.gradle”都有错误。那么您知道我的问题的其他想法或解决方案吗?
  • 这也显示在消息视图中。“错误:配置项目 ':app' 时出现问题。> 无法解析配置 ':app:_debugUnitTestApkCopy' 的所有依赖项。> 无法解决junit:junit:4.12。要求:项目:app > 无法解析 junit:junit:4.12。> 无法获取资源“jcenter.bintray.com/junit/junit/4.12/junit-4.12.pom”。> 无法获取“jcenter.bintray.com/junit/junit/4.12/junit-4.12.pom”。> 连接到 jcenter.bintray。 com:443
  • 这是最后一行,不适合其他评论:>连接到 jcenter.bintray.com:443[jcenter.bintray.com/5.153.35.248] failed: Connection timed出:连接
  • 这可能也很重要:在我的 AndroidManifest.XML 活动中,我的名字用红线标记。它看起来像这样:android:name="MainActivity"
  • 第一个听起来像您在 build.gradle 文件中的某处有 compile javax.inject:javax.inject:1,并且 gradle 构建过程无法从您设置的任何存储库中下载该库。第二个可以通过将name="MainActivity" 更改为name=".MainActivity" 来修复(在类名前添加一个点)。
【解决方案2】:

如果重建或清理没有帮助,请尝试执行:文件 - 使缓存无效/重新启动

【讨论】:

    猜你喜欢
    • 2017-09-04
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    相关资源
    最近更新 更多