我现在知道,如果我需要在某个静态函数中获取资源,我必须以某种方式传递上下文或上下文的资源 - 通过参数或通过静态变量。但是为什么它是必要的?资源的 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/