Android hierarchyviewer在树视图中显示每个视图的ID。 ID是@符号后跟一个数字,例如@ 4051d698
在android documentation中,此数字的目的被解释为“指向视图对象的指针”。
假设有一个像AOSP这样非常大的Android项目的来源。 如何使用此ID找出视图背后的java源代码?
是否有一个我可以调用的方法告诉我什么是绑定到这个指针的R.java条目?
答案 0 :(得分:1)
如何通过使用此ID来确定视图背后的java源代码是什么?
你不能,至少没有调试器。如果您习惯于C / C ++开发,那十六进制值大致类似于指针。仅仅因为你有一个指向C / C ++中一大块RAM的指针并不意味着你可以确定驻留在该指针的对象背后的源代码。
现在,调试器中有一种方法可以提供此十六进制值,并且调试器将匹配对象和源代码。我不是Eclipse专家,也不是其他IDE调试器的专家,知道是否有办法执行此操作。但是,即使可以这样做,它也可能只会为您提供对象类的来源(例如,如果View
是ListView
,它可能会将您发送到ListView
源代码),而不是创建对象的源代码。
是否有一个我可以调用的方法告诉我什么是绑定到这个指针的R.java条目?
首先,R.java
不会“绑定”任何指针。
其次,有问题的View
可能不是来自夸大的布局。它可能是直接在Java代码中创建的。
如果View
有“查看对象ID”(例如id/content
),那么可以更好地帮助您找到它的来源,因为它将是android:id
值,可能来自你的布局资源。