Android Studio 提示 Cannot resolve symbol ‘XXX’ 问题如何解决

现状,Android Studio 对于一些 Symbol 不能 Resolve, 具体请看图 1 、图 2 。
图 1: %title插图%num
图 2:%title插图%num

试过的方法
1. Clean Project
2. Invalidate and Restart
均没用

求个解决方案

22 条回复    2021-07-21 17:21:16 +08:00

thetbw
    1

thetbw   23 天前

是不是 gradle 的问题,跑一下看他会报什么错
AoEiuV020
    2

AoEiuV020   23 天前

ListView ?这不是 android 内部的组件吗,普通安卓项目自然没法访问一些内部的变量,代码都不在你的项目里,
要看就下载完整安卓源码项目试试,
sunpj
    3

sunpj   23 天前

应该是少了个依赖
zhaoyuting
    4

zhaoyuting   23 天前

@thetbw
不知道怎么操作…
整个项目可以正常打包,也能调试。

我点进去 android SDK 的类 ListView 出现了一堆红色,后来我点进 Context 类里面也是同样的一堆红色:Cannot resolve symbol 。

@AoEiuV020
你们的 Android Studio 在查看 SDK 类的源代码的时候也是同样的情况吗?
我之前没搞过 android,这个现象是不是挺正常的 . . . . 都这样?

guchengyehai1
    5

guchengyehai1   23 天前 via iPhone

这是因为那些 class 都是定义在系统中
root99527
    6

root99527   23 天前

mOldSelectedPosition 是哪里定义的?
gtanyin
    7

gtanyin   23 天前

@zhaoyuting 都这样,没问题
zhaoyuting
    8

zhaoyuting   23 天前

@root99527
mOldSelectedPosition 是在 Adapter
zhaoyuting
    9

zhaoyuting   23 天前

@root99527
mOldSelectedPosition 是在 AdapterView 里定义的。AdapterView 是 ListView 的父类的父类。
这是我靠搜索搜到的,因为 cannot resolve symbol,没得跳转,只能手动搜了。

@sunpj 我再看看是怎么回事

@guchengyehai1
@gtanyin
好的,学习了

secretman
    10

secretman   23 天前

上面那些什么在系统里的都是瞎说, 你都 import 了。
一般不管他过一段时间就好,受不了就备份 .idea 、.gradle,然后删了重新打开项目试试

secretman
    11

secretman   23 天前

Android Stduio 经常各种泛红但是其实没错,IDE 垃圾

secretman
    12

secretman   23 天前

@secretman 看走眼了,你这是源码,下载一份完整的编译吧,你现在打开的是 SDK 里面的,对不起楼上的大哥们
cg2dev
    13

cg2dev   23 天前

如果是 App 应用开发,这种系统包里面的报错可以忽略,因为他依赖于其他的包,但是对于你应用开发没有影响,因为你开发过程属于编译时。到了设备上是运行时,系统里面集成了他依赖的各个 jar,所以不会报错。

如果你是系统开发,可以将他依赖的 bootclasspath 里面的 jar 全部复制到工程中以 compileOnly 的方式依赖,就可以消除奥错了。

winterbells
    14

winterbells   23 天前 via Android

ls 好像有种 Mac OS 帖子里喷 Windows 的感觉…
fredli
    15

fredli   23 天前

检查一下 JDK,再试试 Invalidate and Restart
HarryQu
    16

HarryQu   23 天前

我看了下 ListView 的源码,import 中报红的部分注解,点击可以跳转。报红的部分成员变量可以在父类中找到。

但是像 ViewRootImpl 类就找不到了。如果想要研究系统源码的话,直接使用 Android SDK 并不方便。

在别人的文章中看到的:
在研究 Android SDK 源码的时候,经常会发现部分 API 报红,点击无法跳转,这对于研究源码来说非常的不方便。

Android 有两种类型的 API 不能通过 SDK 访问。

一种是在 com.android.internal 包中的 API,称之为 internal API 。

另一种是被标记为 @hide 属性的类和方法,这是一组被隐藏的 API,称之为 hidden API 。

当使用 Android SDK 进行开发的时候,应用默认引用了 android.jar ,它位于 SDKDir\platforms\android-X 目录下( X 代表 API 级别),默认移除了所有的被 @hide 标识的方法或者类以及 internal 包下的类。当应用在设备上运行时,它会加载 framework.jar 。简单来说,framework.jar 和 android.jar 等同,但是没有移除 internal API 和 hidden API 。Hidden API 之所以被隐藏,是想阻止开发者使用 SDK 中未完成或不稳定的部分。因为这些 API 可能有问题:

1. 隐藏的 API 在未来的 Android 版本中可能被删除。
2. 可能会被修改方法签名或字段类型。
3. 设备制造商还可能会删除或修改隐藏的 API,这可能会影响这部分设备。

引用的两篇文章:
https://zhuanlan.zhihu.com/p/33241064
https://www.jianshu.com/p/fbf45770ecc8

rrZ2C
    17

rrZ2C   22 天前

是不是 因为 @UnsupportedAppUsage
/**
* The last selected position we used when notifying
*/
@UnsupportedAppUsage
int mOldSelectedPosition = INVALID_POSITION;
mail2dechao
    18

mail2dechao   22 天前

将对应的依赖重新删除添加并同步就好了
fan123199
    19

fan123199   22 天前

对于自己工程,要各种删除.gradle .idea build 等目录可解决。但是源码,我没有找到银弹
ikas
    20

ikas   22 天前

你这是看源码…sdk 带的那个也不是完整系统源码啊….跟你项目没有任何关系..
Helsing
    21

Helsing   21 天前 via iPhone

楼上说的对,你查看的是源码,里面飘红是很正常的,因为引用了很多其他的系统源码,而你的工程里又没有。想看源码的话可以谷歌一下怎么把源码导入 Android Studio
zhanlanhuizhang
    22

zhanlanhuizhang   16 天前

你这是遇到了*端情况,你把编译的所有相关文件全部删除。然后改个名称。重新打开就可以了。settings.gradle 里面的项目名称也改一下。rootProject.name

分享服务器组装经验!

终于组装了一台属于自已的服务器了,配置如下:

CPU:   P4 530J
主板:   超微P8SCT
内存:   Kingston DDR2 533  512MB*2
硬盘:   希捷ST3160827AS   160GB*2
机箱:   千际1U机箱(P4散热片,300W电源)

合计费用: 1500+2050+1170+1720+1450 = 7890元

本想装成至强,但是很早就买了这个机箱,CPU风扇是从右侧吹风的,不太适合一般的至强主板,而且至强的整机费用高,迫于经济和现实条件就只好装P4了。
吸取了dudu的教训,没有买华硕的主板,买了超微新出的P8SCT主板(注意:芯片组是E7221+FW82801FR,属于入门级服务器主板,稳定性应该有保障),主板能支持64位P4的,不过现在装64位意义不大,所以使用了530J。
主板只支持DDR2,所以使整机费用增加了,好在现在的DDR2内存降得很厉害,所以还能接受。主板还有一个64位PCI-X的插槽,为以后升级到SCSI硬盘留了空间。
同时主板支持SATA阵列,阵列模式RAID0,RAID1,RAID10,对于服务器来说数据安全是*重要的,所以我选择了两个硬盘组成RAID1,并且特定使用了希捷ST3160827AS,因为这款硬盘支持NCQ功能,而主板也是支持开启NCQ的,不过由于*近这款硬盘大面积缺货,*后在希捷的总经销处买到了,贵是贵了点,不过是盒装包5年的,应该有保障。
要注意的是在安装RAID1的过程中*好在BIOS中对生成的逻辑盘进行一致性检查,注意,检查前要对逻辑盘进行初始化(注意不是格式化),而且关闭快速初始化功能,否则可能一致性检查不通过,不过当关闭快速初始化功能后初始化的时间大大加长,我两个160GB用了6个小时,呵呵!不过这样初始化后一致性检查应该就能通过了,当通过检查后才安装操作系统。(注:一致性检查能检查出RAID1中两个硬盘中的数据差异并进行修复)
因为机箱有五个强力的SUNON风扇,所以噪音非常之大,快把我给搞疯了。不过温度方面还算可以,待机的CPU温度为47度,占有率100%运行时CPU温度为70度,(注意是在室温中测试不是在机房)
还有原风扇是挡住了电源插座的,不过我多钻了两个洞,把风扇右移了一个风扇位,这样就刚好合适了。