ViewRootImpl不在Android SDK中。

6

我只是随便试试(我确实知道 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();

I get a (deserved)

[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输出复制粘贴过来。)

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

此外,Google似乎在整个API文档中都没有提到它,即使只有一个单词也没有。 我认为它主要用于内部,但这并不是理由。

在stackoverflow.com上有138个与“ViewRootImpl”相关的结果(嗯,现在至少应该有139个),但在这种情况下它们完全无关紧要(如果我没有错过特别的东西)。

我看了一些其他网站,例如这个源代码,但我不知道是否有用来将其伪装成SDK以进行探索?

有什么建议吗? 提前致谢。


相关 - 您看到的错误已被记录为平台上的错误,详见此处:Issue 197291: AppCompatDialog crashes on selecting text - Richard Le Mesurier
2个回答

10

-1
如果你使用Eclipse,ViewRootImpl是不可见的。
你可以使用Android Studio代替。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接