1
thetbw 2021-07-15 09:13:45 +08:00
是不是 gradle 的问题,跑一下看他会报什么错
|
2
AoEiuV020 2021-07-15 09:22:04 +08:00
ListView ?这不是 android 内部的组件吗,普通安卓项目自然没法访问一些内部的变量,代码都不在你的项目里,
要看就下载完整安卓源码项目试试, |
3
sunpj 2021-07-15 09:31:57 +08:00
应该是少了个依赖
|
4
zhaoyuting OP |
5
guchengyehai1 2021-07-15 09:42:37 +08:00 via iPhone
这是因为那些 class 都是定义在系统中
|
6
root99527 2021-07-15 09:44:27 +08:00
mOldSelectedPosition 是哪里定义的?
|
7
gtanyin 2021-07-15 09:47:16 +08:00
@zhaoyuting 都这样,没问题
|
8
zhaoyuting OP @root99527
mOldSelectedPosition 是在 Adapter |
9
zhaoyuting OP @root99527
mOldSelectedPosition 是在 AdapterView 里定义的。AdapterView 是 ListView 的父类的父类。 这是我靠搜索搜到的,因为 cannot resolve symbol,没得跳转,只能手动搜了。 @sunpj 我再看看是怎么回事 @guchengyehai1 @gtanyin 好的,学习了 |
10
secretman 2021-07-15 10:01:39 +08:00
上面那些什么在系统里的都是瞎说, 你都 import 了。
一般不管他过一段时间就好,受不了就备份 .idea 、.gradle,然后删了重新打开项目试试 |
11
secretman 2021-07-15 10:02:04 +08:00
Android Stduio 经常各种泛红但是其实没错,IDE 垃圾
|
13
cg2dev 2021-07-15 10:09:29 +08:00
如果是 App 应用开发,这种系统包里面的报错可以忽略,因为他依赖于其他的包,但是对于你应用开发没有影响,因为你开发过程属于编译时。到了设备上是运行时,系统里面集成了他依赖的各个 jar,所以不会报错。
如果你是系统开发,可以将他依赖的 bootclasspath 里面的 jar 全部复制到工程中以 compileOnly 的方式依赖,就可以消除奥错了。 |
14
winterbells 2021-07-15 10:20:01 +08:00 via Android
ls 好像有种 Mac OS 帖子里喷 Windows 的感觉…
|
15
fredli 2021-07-15 10:32:14 +08:00
检查一下 JDK,再试试 Invalidate and Restart
|
16
HarryQu 2021-07-15 12:50:34 +08:00
我看了下 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 |
17
rrZ2C 2021-07-15 16:57:40 +08:00
是不是 因为 @UnsupportedAppUsage
/** * The last selected position we used when notifying */ @UnsupportedAppUsage int mOldSelectedPosition = INVALID_POSITION; |
18
mail2dechao 2021-07-15 17:40:34 +08:00
将对应的依赖重新删除添加并同步就好了
|
19
fan123199 2021-07-16 00:41:38 +08:00
对于自己工程,要各种删除.gradle .idea build 等目录可解决。但是源码,我没有找到银弹
|
20
ikas 2021-07-16 15:07:37 +08:00
你这是看源码...sdk 带的那个也不是完整系统源码啊....跟你项目没有任何关系..
|
21
Helsing 2021-07-17 14:55:26 +08:00 via iPhone
楼上说的对,你查看的是源码,里面飘红是很正常的,因为引用了很多其他的系统源码,而你的工程里又没有。想看源码的话可以谷歌一下怎么把源码导入 Android Studio
|
22
zhanlanhuizhang 2021-07-21 17:21:16 +08:00
你这是遇到了极端情况,你把编译的所有相关文件全部删除。然后改个名称。重新打开就可以了。settings.gradle 里面的项目名称也改一下。rootProject.name
|