【发布时间】:2011-06-29 07:30:56
【问题描述】:
Android 只需通过 R.id.XXX 就可以找到合适的资源是很神奇的。
AFAIK,资源被编译成二进制格式,那么这个映射逻辑是如何工作的呢?
也许它是这样工作的:
例如,在 layout1.xml 中,我们得到:
<Button android:id="@+id/button1" >
AAPT 会在 R.java 中生成这个:
public static final int button1=0x7f05000b;
生成*.apk时,@+id/button1会被替换为“0x7f05000b”。
因此,当我们调用时:
findViewById(R.id.button1);
我们基本上仍然是根据 ID 进行搜索,尽管 ID 是一个像 0x7f05000b 这样的数字。
谢谢!
添加
我真正想知道的是,资源id整数是如何解析成资源内容的?也就是说,Android运行时是如何定位以资源id为唯一线索的资源内容的?
例如,如何找到带有资源 id 的可绘制图片?或者如何找到带有资源 id 的字符串值?
【问题讨论】: