只是玩了一下(我确实知道 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
中排除了类。该类存在于实际的运行时环境中。
关于java - ViewRootImpl 不在 Android SDK 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480966/