在 android 中,R.java 用于提供对 XML 文件中定义的资源的访问。
要访问资源,我们需要调用findViewById()
方法传入要获取的资源的 id。
这类似于 Spring,其中 bean 是在 XML 上下文中定义的,并通过使用应用程序上下文来获取。context.getBean("beanId")
这提供了松散耦合,因为 bean 是在外部定义的,并且可以在不修改代码的情况下进行更改。
这让我很困惑。虽然Android看起来和spring很像,但是它有什么优势呢?
- 无论如何,拥有一个中级 R.java 有什么意义呢?难道我们不能通过使用资源直接从XML获取资源吗?
读者/应用程序上下文。例如
findViewById("resourceId")
- 不存在任何松散耦合。既然 R.java 中的引用是自动生成的,那么如何删除资源并放入新资源呢?
- 它遵循什么设计模式(如果有的话)?
- 使用 IOC(如 Roboguice)注入资源不是更好吗?为什么谷歌决定给我们这样的
一种奇怪的资源使用方式?
原谅我的无知。我是一名 Java 开发新手,同时尝试了太多事情。 :-)
感谢您的所有反馈。
最大的优势在于本地化和为不同的屏幕尺寸提供替代资源。
例如,您可以拥有一个字符串资源R.string.myname
这可以用英语定义/values-en/strings.xml
并用西班牙语/values-es/strings.xml
系统将根据您需要使用的区域设置来处理或选择正确的文件@string/myname
在您的布局文件中或R.string.myname
在你的代码中。
类似地,您可以定义两个纵向和横向布局文件
res/layout/mylayout.xml
res/layout-land/mylayout.xml
在您的代码中,您只需指定 R.layout.mylayout 即可膨胀布局。资源管理器
如果设备处于横向模式,则在布局区域中拾取文件。
手动执行此操作将是一场噩梦 - 因此需要 R 文件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)