Как найти код для представления в иерархии просмотра
Среда просмотра иерархии Android показывает идентификатор для каждого представления в древовидном представлении. Идентификатор представляет собой знак @, за которым следует число, например @4051d698
В документации по Android назначение этого числа объясняется как "указатель на объект просмотра".
Предположим, у кого-то есть источники очень крупного андроид-проекта, такого как AOSP. Как можно выяснить, что является исходным кодом Java за представлением, используя этот идентификатор?
Есть ли способ, который я могу вызвать, который говорит мне, что запись R.java связана с этим указателем?
1 ответ
Как можно выяснить, что является исходным кодом Java за представлением, используя этот идентификатор?
Вы не можете, по крайней мере, без отладчика. Если вы привыкли к разработке на C/C++, это шестнадцатеричное значение примерно аналогично указателю. Тот факт, что у вас есть указатель на кусок оперативной памяти в C/C++, не означает, что вы можете определить исходный код объекта, находящегося по этому указателю.
Теперь возможно, что в отладчике есть способ предоставить это шестнадцатеричное значение, и отладчик сопоставит его с объектом и исходным кодом. Я не являюсь экспертом по Eclipse или экспертом по другим отладчикам IDE, чтобы знать, есть ли средства для этого. Тем не менее, даже если это можно сделать, он, вероятно, даст вам только источник класса объекта (например, если View
это ListView
, это может отправить вас в ListView
исходный код), а не исходный код того, что создал объект.
Есть ли способ, который я могу вызвать, который говорит мне, что запись R.java связана с этим указателем?
Первый, R.java
не "привязан" к каким-либо указателям.
Во-вторых, View
возможно, речь не идет о раздутой компоновке. Вместо этого он мог быть создан непосредственно в коде Java.
Если View
имеет "Просмотр идентификатора объекта" (например, id/content
), это может помочь вам лучше понять, откуда она взялась, так как это будет android:id
значение, возможно, из ваших ресурсов макета.