android - 为什么无法以静态方式访问资源?

标签 android resources

我现在知道,如果我需要在某个静态函数中获取资源,我必须以某种方式传递上下文或上下文的资源 - 通过参数或通过静态变量。但是为什么它是必要的?资源的 ID 在静态环境中 是可访问的,例如 R.string.some_my_stuff。如果我想要一个系统资源,它也可以通过 Resources.getSystem().getString(android.string.some_common_stuff) 看到。但是为什么我不能做类似的事情来获取应用程序资源呢?资源文件是源代码的通常静态部分。资源是静态并且属于应用程序。应用程序类以相同的方式属于它,我可以以静态方式访问它们的静态部分。

为什么我不能以最自然的相同静态方式在所有应用程序中使用资源,而是必须通过实例访问它们?

恐怕,我不明白一些非常重要的事情。

请不要再说我做不到。我知道,以我的名誉。请解释原因,或告诉我方法......只有这样才能治愈我的悲伤:-)谢谢。

最佳答案

每个应用程序的资源 ID 都是唯一的,它们在所有应用程序(包括 Android 系统)中都不是唯一的。例如。在不同的应用程序中可能有两个不同的字符串具有相同的 ID,比如 42。 因此,您可能只能静态访问一个应用程序(每个程序员都必须同意哪个是 Android 系统(没有选择,它是唯一一个始终安装的))。对于所有其他应用程序,您必须能够告诉系统您想要访问哪个应用程序的资源。您使用上下文执行此操作。

关于android - 为什么无法以静态方式访问资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8848121/

相关文章:

java - 如何在 ListView Android 的页眉和页脚中使用 Butter Knife

安卓 "Not_Market_Managed"错误

java - 使用 RecyclerAdapter 的 Facebook 原生广告

resources - 英文名字和姓氏的数据库或列表

static - 扩展 Spring Boot WebMvcConfigurationSupport 时出现静态资源问题

c++ - Windows LoadMenu 错误 : "The specified resource name cannot be found in the image file."

java - 一起使用java和C++的Android项目

android - 启用组合会导致构建失败

javascript - ASP.NET MVC - 如果您不想将 .js 文件存储在/Scripts 中,您会将它们放在哪里?

Android获取资源类型id