【问题标题】:Is accessing application resources via the Resource class same as accessing via the context?通过 Resource 类访问应用程序资源是否与通过上下文访问相同?
【发布时间】:2020-08-13 11:31:51
【问题描述】:
在编写代码时,我发现我可以通过调用getString() 两个context 上的函数来访问字符串资源
val string = context.getString(...)
和context.resources
val string = context.resources.getString(...)
哪种方法是正确的?为什么是这两种方式?
【问题讨论】:
标签:
android
android-resources
android-context
【解决方案1】:
哪种方法是正确的?
两者都可以。 getString()的实现是:
@NonNull
public final String getString(@StringRes int resId) {
return getResources().getString(resId);
}
(来自the source code)
所以,他们都做同样的事情。
为什么是这两种方式?
getString() 被大量使用。据推测,他们在Context 中添加了一个辅助方法来简化对字符串资源的访问。然而,虽然他们对几种资源类型执行此操作,但许多其他资源类型只能通过完整的 Resources 对象获得。