无法解析符号 R

6

我在使用Android Studio开发一个Android Wear应用时,想添加一个简短的提示信息。

但是我遇到了一个问题,就是代码中出现了“Cannot Resolve Symbol R”的错误提示,我不知道为什么会出现这个错误。

    import android.app.Activity;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.support.wearable.view.WatchViewStub;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;

    public class MyActivity extends Activity {

        private TextView mTextView;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my);

    //getnextpage
    Button getnextpage;
    getnextpage = (Button) findViewById(R.id.getnextpage);
    getnextpage.setOnClickListener(new OnclickListener() {
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "Here is 2nd Page", Toast.LENGTH_LONG).show();
        }
    });
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            mTextView = (TextView) stub.findViewById(R.id.text);
        }
    });
  }
 }

可能是"无法解析符号R"在Android Studio中的重复问题。 - Zoe stands with Ukraine
8个回答

9
以下是一些操作步骤:
1)尝试使用Build -> Clean/Rebuild来重建项目。
2)如果导入R文件时出现丢失,手动输入import <package name>.R
3)确保与其对应的XML文件中的所有资源都已完整。
希望其中任何一个方法能对您有所帮助,因为没有特定的解决此问题的方法。

4
如果在您的情况下导入 R 缺失,您需要手动导入 R
import <packagename>.R;

请使用您自己的包名替换<packagename>

在您的代码中,未导入R,因此您的Android Studio可能会在您的包中查找资源时感到困惑。


你的意思是在顶部写入代码 'import <packagename>.R;' 吗? - SparkyM
在您的代码导入部分中添加import <packagename>.R,不需要放在顶部,记得在清单文件中使用您自己的包名。 - JasonYang
嗯,我尝试了快捷键Ctrl+Shift+O,但它不起作用。 - SparkyM
检查您的项目,看看是否在资源(特别是xml文件)中存在错误。在这种情况下,您的文件将无法编译,也无法解决R。如果您尚未导入R,则需要进行另一个检查。否则,可能需要更深入地检查代码。 - JasonYang

2

我知道其他人已经提到了大多数这些要点,但是这应该作为一个总结,并希望提出一些新的解决方案!

如果只有字母“R”是红色的,那么意味着您的R文件存在问题(可以在build\generated\source\r\debug\com\domain.projectname\R找到)。不要随意编辑R文件-因为每次项目被清理和构建/重建时,R文件都会重新生成(它完全重置而不失败)。有几种可能的解决方案:

1)您可能已经在Activity顶部编写了import android.R;。您需要导入不同的R文件。这意味着如果您的域名是“example”,项目名称是“project”,那么您的导入应该是:import com.example.project.R

2)R是一个构建文件。这意味着当您清理并在构建时生成时,它会消失,如上面所述。确保在清理后构建或重建您的项目。

3)也许您的gradle项目同步尚未完成。等待所有进程运行完毕!

4)也有可能您的R文件损坏或丢失。如果以上方法不起作用,则可以得出这个结论。它有一个非常简单的解决方法,因为如我之前所解释的,当您重建一个新的R文件时,它会生成。所以只需导航到Build并单击Clean project,然后等待完成后,单击Rebuild project。使用新的R文件,您的问题应该消失了。

P.S:没有提供所有相关代码,几乎不可能给出准确的答案


0

如果您的类缺少R.Class的链接,可能需要导入它。

因此,在开始类之前,您可以简单地开始:

import Your_Package_name.R;

例如:

import com.example.myproject.R;

Clean/Rebuild项目不是解决方案时,您可以手动编写此代码。

用例:

import javax.crypto.spec.SecretKeySpec;
import javax.net.ssl.HttpsURLConnection;
import com.example.jsonwebservice.R;

这对我有用。


0

看起来 Gradle 在你的电脑上执行时间太长了。请等待 Gradle 完成项目的构建。


0
对我最终起作用的是查看Android Studio中的“事件日志”选项卡,我在那里看到了以下内容:

Frameworks detected: Android framework is detected in the project Configure

点击“配置”将AndroidManifest.xml设置为项目的配置文件(将其标识为“android”),然后所有的“R”错误都消失了,我才能编译和运行。
在执行此操作之前,我尝试过的所有操作,如:“清理”,“重建”和重新启动Android Studio都没有起作用。

0

如果以上任何答案都不行,以下方法解决了我的问题...

这是我尝试过的:

  • 多次进行“清理”、“重建”和“无效缓存重启”操作

  • 手动添加 [我的包名].R

这并没有解决问题,所以我 卸载了 Android Studio 并重新安装了最新版。

以上链接中的被接受的答案有以下步骤(我在此重现):

  1. 通过安装程序卸载(在 Windows 控制面板中)。
  2. 删除 Android Studio 文件

    进入你的用户文件夹(%USERPROFILE%),并删除 .android、.AndroidStudio 和任何带版本结尾的类似目录,例如 .AndroidStudio1.2,以及如果存在的话,.gradle 和 .m2。然后前往 %APPDATA%,并删除 JetBrains 目录。最后,前往 C:\Program Files 并删除 Android 目录。

  3. 删除 SDK

    前往 %LOCALAPPDATA% 并删除 Android 目录,以删除 SDK 的任何残留。

  4. 删除 Android Studio 项目

    Android Studio 在文件夹 %USERPROFILE%\AndroidStudioProjects 中创建项目,您可能想要删除这些项目。

我跳过了第四步,然后为了确保万无一失,卸载了我所拥有的单独的 Java 7 安装。

接下来,我下载了最新的安卓工作室(3.3.2),并将其安装。

这或许有点激进,但现在一切都正常工作了,"Cannot resolve symbol R" 错误也消失了。


0

我通过编辑我的 build.gradle 文件解决了这个问题。

compiledSdkVersion 必须与你的 appcompat 依赖库版本对齐。

我的 compileSdkVersion 是22,所以我编辑了我的 appcompat 依赖库为

compile 'com.android.support:appcompat-v7:22.2.1'

所以,我希望这可以成为一个解决方案。


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