为什么不将数据(strings.xml,main.xml)保留在.xml文件中?为什么要把它转换成R.java?
似乎android可以读取xml(例如androidmanifest.xml)。那么为什么不将strins.xml数据和main.xml数据保留为.xml格式并将这些xml发送到Android设备?我是新手...也许我最终会看到R.java中还有更多东西,而不仅仅是那些直接来自那些.xml的静态变量。
感谢, 香农
答案 0 :(得分:1)
这样您就可以轻松地引用您在布局,可绘制和字符串文件中创建的对象。此类表示可以在代码中实例化的所有资源,或者可以在编码中使用
答案 1 :(得分:1)
因此,您可以使用R类对象从代码中轻松引用资源ID,避免编译错误,我认为
答案 2 :(得分:1)
如果您的程序中存在错误,则希望尽早检测到错误。
如果资源保留为XML,则在运行时(测试驱动或用户驱动)将发现任何错误。测试永远不会证明没有所有缺陷,因此您的软件用户可能会发现一些错误!
但是,如果资源在R
中转换为源,则编译器将检查对它们的所有引用。任何错误(与资源引用有关)都会在很早的阶段被检测到,早在您的客户看到它们之前。
答案 3 :(得分:0)
将XML内容的id引用转换为代码可以在编码时轻松使用这些引用,并且在编译期间可以看到正确的用法。因此避免了运行时异常。
我不知道这是否是核心原因,但这对我来说很重要: - )。
答案 4 :(得分:0)
R.java是所有资源的处理程序。
您可以创建资源,而R.java会自动在您的代码和资源之间建立连接。您可以轻松地从R获取各种资源,并且android提供了许多支持R.java及其处理程序(那些整数)的API。你t need to manually open a stream to res files, do file reading, images decoding and etc. It
非常有意思。
答案 5 :(得分:0)
R.java
不包含任何数据。它是在构建过程中由aapt
生成的,它准备资源将它们打包到APK中,包括以更易于阅读和解析的格式编译XML文件。 R.java
包含静态int成员,它们只是打包资源的索引。
请参阅A Detailed Look at the Build Process,并查看项目的bin/
文件夹。