ViewRootImpl不在Android SDK中

问题描述 投票:5回答:2

只是玩了一下(我知道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。出现了相同的消息,仅针对另一个源代码行。

此外,即使在整个API文档中使用一个单词,Google似乎也没有发现它有用。我认为它主要用于内部,但如果你问我,这是没有理由的。

stackoverflow.com上有“ViewRootImpl”的138次点击(好吧,现在应该至少有139次),但在这种情况下它们完全不相关(如果我没有错过一些特别的东西)。

我已经看了一些其他网站,并发现,例如,this source code,但我有点怀疑将它伪装到SDK以便探索它是有用的吗?

有什么建议吗?提前致谢

java android
2个回答
8
投票

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

另见:What does @hide mean in the Android source code?


0
投票

如果使用Eclipse,则ViewRootImpl是不可见的。 您可以改用Android Studio。

© www.soinside.com 2019 - 2024. All rights reserved.