java - ViewRootImpl 不在 Android SDK 中

标签 java android

只是玩了一下(我确实知道 View.getRootView()),我手动地逐步上升到根甚至更远。

...
View tv=(View)mv.getParent();
View uv=(View)tv.getParent();
...

实际上,我曾以为我会遇到一个NullPointerException,但我却遇到了

03-18 13:07:45.554 13568 13568 E AndroidRuntime: java.lang.ClassCastException: android.view.ViewRootImpl cannot be cast to android.view.View

好的,很好,这看起来也很合理。

我还不知道 ViewRootImpl,所以我决定拿起这个话题并稍微调查一下。

但是,当我这样做的时候

ViewRootImpl wv=(View)vv.getParent();

我得到了(应得的)

[javac] /home/jagged/Downloads/android/motog/firsttry/src/tk/wellthen/main.java:285: cannot find symbol
[javac] symbol  : class ViewRootImpl
[javac] location: class tk.wellthen.main
[javac]     ViewRootImpl wv=(View)vv.getParent();
[javac]     ^

来自编译器,但是,当我根据上面的 logcat 输出完全限定它时,我得到(几乎)相同的错误消息。 (我什至从 logcat 输出中复制粘贴它以避免拼写错误。)

在尝试import android.view.ViewRootImpl 时不用多说。出现相同的消息,只是针对另一行源代码。

此外,Google 似乎认为在整个 API 文档中仅用一个词提及它也没有用。我认为它主要用于内部,但如果你问我,那是没有理由的。

在 stackoverflow.com 上“ViewRootImpl”有 138 次点击(好吧,现在应该至少有 139 次),但在这个上下文中它们完全不相关(如果我没有遗漏某些东西的话)特别)。

我查看了一些其他网站,并找到了,例如 this source code ,但我怀疑将其伪造到 SDK 中以探索它是否有用?

有什么建议吗?提前致谢

最佳答案

ViewRootImpl is annotated with @hide .这从用于开发的 stub android.jar 中排除了类。该类存在于实际的运行时环境中。

另请参阅:What does @hide mean in the Android source code?

关于java - ViewRootImpl 不在 Android SDK 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480966/

相关文章:

java - 如何获取 Restheart 系列的 Etag

java - 如何检查在单元测试上下文中执行的方法?

Android Studio 3.1.3 不显示布局设计预览

java - 如何作为方法的结果返回 DataSnapshot 值?

android - 内部 DialogFragment 类是否应该是静态的?

java - RestEasy + JacksonJaxbJsonProvider 配置包含 + 注释

java - 如何从我的插件的项目资源管理器中删除 Eclipse 上下文菜单“MOVE”

Android 1.5 和 1.6 调用完成 Activity 和主页按钮奇怪的行为

java - Matcher 会跳过第一场比赛吗?或者我做错了什么

java - FXMLLoader 初始化和 SpringBoot - @Configuration