Android Studio 2.1 无法解析符号 'R'

4

Android Studio 2.1,Java V8 Update 91,Gradle 2.1.0。

我知道这个问题在这里已经被问过很多次了,但是没有任何一种推荐的解决方案奏效。

在编译准备好运行到模拟器之后,我的IDE在R.id属性处出现错误。甚至我没有对文件做任何更改,所有Java文件突然出现相同的错误。

我尝试创建一个新项目,看看是否会有所不同,但是错误依然存在。我认为这可能是内部错误,即使我刚刚更新了我的IDE。

这个Java文件;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_science);

    list_View = (ListView) findViewById(R.id.maintable); 
    String[] Days = new String[] { "Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"};
    dayList.addAll(Arrays.asList(Days));
    adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dayList);
    list_View.setAdapter(adapter);

    NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);

    if (nfc.isEnabled()) {
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dayList);
        Toast.makeText(this, "NFC turned ON", Toast.LENGTH_SHORT).show();
    }

    else {
        Toast.makeText(this, "Please turn On NFC", Toast.LENGTH_SHORT).show();
    }

}

R是错误。

与Java相关的XML文件;

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/maintable"
    >
</ListView>

这又是一个内部错误吗?


请编辑您的问题,展示包含您'R'问题的整个类文件。请注意,您的Java堆栈跟您的应用程序,更别说'R'问题没有任何关联。 - CommonsWare
已完成编辑Java代码。 - Infinite Loops
那不是包含你的 R 问题的完整类文件。 - CommonsWare
你是什么意思?是指R.java文件吗? - Infinite Loops
我的意思是Java文件中包含了更多行代码,其中包括onCreate()方法。我并没有建议您发布更多的代码行。我建议您发布整个类文件 - CommonsWare
是的,只有在我的onCreate()方法中。你是指整个Java文件吗? - Infinite Loops
9个回答

12

尝试同步项目,前往 工具 > Android > Sync Project with Gradle Files

更新

如果您正在使用Android Studio 3.3,请使用 Sync Project with Gradle Files 图标

输入图像描述


1
尝试清理项目:Build > Clean Project。如果错误仍然存在,则可能在您的一个XML文件中有语法错误。 - Omar Aflak
我已经完成了,事实上当我们启动IDE时,项目已同步。 - Infinite Loops
@InfiniteLoops 同步失败了吗?你有得到任何有用的错误信息吗? - Hadas Kaminsky
它说,**错误:执行任务“:app:processDebugManifest”失败。
清单合并器出现多个错误,请参见日志**。
- Infinite Loops
@InfiniteLoops:这就是为什么你的R类没有被生成的原因。 - CommonsWare
1
@InfiniteLoops 试试这个链接:https://dev59.com/-uo6XIcBkEYKwwoYNBZQ - Hadas Kaminsky

2

我刚刚经历了这个噩梦。最终不得不将所有的xml代码删除到记事本中,直到问题得以解决。然后逐步重新引入代码段,直到问题出现。 回想起来,一切都始于我使用WordPad粘贴某些代码。显然,WordPad包含了不同的编码或其他东西,因此最好避免使用。 无论如何,只需检查您的xml中的空格,通过将其全部删除来摆脱任何隐藏字符。


1
尝试通过转到Build> Clean ProjectBuild> Make Project执行清理和重建。

仍然没有解决。仍然显示与我之前回复的错误相同。 - Infinite Loops

1
我已经多次见到这个问题。正确的解决方案是:
当您输入 R 时,Android Studio 会给您许多不同的命名空间来选择,看起来像 R(***.***.***),但实际上您需要的是以 ***.myProject 结尾的命名空间。(注意:myProject 是您的项目名称),例如: R(com.example.milka.demoProject)
如果您选择任何其他命名空间,都会出现错误消息,因此您必须删除不需要的 import,并重新选择您的 R

1
有时候,当xml文件(比如activity_main.xml)出现错误时,R.java类可能不会被创建。例如,如果您更改了一些保留字无法更改的属性名称,就像将名为"id"的属性更改为另一个名称,比如"id_A_Word_With_Error_Here",这段代码可能是activity_main.xml的一部分,那么您就会遇到错误(R类未被创建)。
<android.support.v7.widget.RecyclerView
            android:id="@+id/messageRecyclerView"

而且出现了以下错误:

  <android.support.v7.widget.RecyclerView
            android:id_A_Word_With_Error_Here="@+id/messageRecyclerView"

如果清理、重建没有起作用,而且导入中没有错误,比如 import com.something...,那么我的建议是在 xml 文件中搜索错误。

0
也许错误是由于工具的原因造成的,尝试从Tools > Android > SDK Manager安装Android SDK Build Tools。 或者,这个错误可能是由于将活动添加到与根不同的命名空间造成的,你可以尝试导入com.example.MyApplication.R; 或者你也可以在Build > Clean Project或Build > Rebuild Project中清理或重建项目。

0

我试图将Gradle版本从2.1.0更改为2.0.0,即使在AS ver 2.1中忽略Instant Run的性能和工作。小的R错误现在已经消失了。现在,我尝试改回2.1.0,R错误也消失了..!!

有时这个小东西让我有点疯狂。

真丢脸。


-1
如果您正在使用Google Play服务,并且您的compilesdk版本低于23,则请下载新的SDK并更新您的编译版本。之后尝试清理和重建。问题将会解决。

抱歉,我没有在使用GPService。 - Infinite Loops

-1

你尝试过重建项目吗?可以在 Build> Rebuild Project 中进行操作,而无需清理项目。我曾经遇到过同样的问题,这个方法对我很有效。


不是的。我已经清理、重建和同步了……请看下面我的回答。 - Infinite Loops

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