Android R.java背后的概念是什么?
在android中,R.java用于提供对XML文件中定义的资源的访问。 要访问资源,我们需要调用Android R.java背后的概念是什么?,android,architecture,android-resources,r.java-file,Android,Architecture,Android Resources,R.java File,在android中,R.java用于提供对XML文件中定义的资源的访问。 要访问资源,我们需要调用findviewbyd()方法,传递要获取的资源的id 这与Spring类似,Spring在XML上下文中定义bean,并使用应用程序上下文获取bean上下文.getBean(“beanId”) 这提供了松散耦合,因为bean是在外部定义的,可以在不修改代码的情况下进行更改 这让我感到困惑。虽然Android的功能与spring相似,但它有什么优势 拥有一个中间的R.java有什么意义?难道我们不能
findviewbyd()
方法,传递要获取的资源的id
这与Spring类似,Spring在XML上下文中定义bean,并使用应用程序上下文获取bean<代码>上下文.getBean(“beanId”)
这提供了松散耦合,因为bean是在外部定义的,可以在不修改代码的情况下进行更改
这让我感到困惑。虽然Android的功能与spring相似,但它有什么优势
findViewById(“资源ID”)
findViewById(R.id.
),Eclipse将显示一个工具提示,其中包含可供选择的选项列表
然而,在平台级别,我要说的是,硬编码的id变量有助于防止在使用字符串标识资源时出错——这是编程时(或编译时,而不是运行时)可以调试的东西。这种比较感觉有点(实际上)奇怪,因为你比较这两种机制是基于这样一个事实,即它们使用命名的东西来做事情。对于资源加载,例如,看看在.Net
世界中如何处理资源
它提供编译时检查资源是否可用。因为如果不可用,则
R.java
中不会有指向它的静态文件。在Spring示例中,如何确保有一个名为beanId
的bean?但它不提供检查资源类型是否正确的功能
为什么这不是松散的?只要新资源具有相同的名称,它将生成相同的静态常量。在Spring中,您将不得不使用相同的bean名称
设计模式?无。它只是通过命名资源,然后仅按名称引用它们,而不是直接从它们的真实位置加载它们,从而增加了一个间接层次
实际上,资源是注入的,因为资源加载必须与本地化相适应。请参阅Android的工作方式;在
.Net
世界中,附加的文化被打包到卫星程序集中;将根据当前文化加载正确的文化。最大的优势在于本地化和提供替代资源不同屏幕尺寸的ces
e、 g您可以拥有字符串资源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以扩大layout.Resource manager
如果设备处于横向模式,则在布局栏中拾取文件
手动执行此操作将是一场噩梦——因此需要R文件,它还包含对资源的访问,例如id、绘图、布局、字符串、数组,以及基本上可以在参考资料中声明的任何内容。非常同意。我认为编译时检查是值得的。编译时安全性是我喜欢J的原因之一ava优于其他动态语言。:-)感谢您对StackOverflow的贡献。考虑阅读关于如何回答问题的条目。如经上所记,你的回答本身并不是一个完整的答案。它指的是其他问题的上下文。考虑一个完整的R.java列表,而不仅仅是其他海报的内容。我只想提两遍你的问题,这是一个非常有趣的问题。