我贴出这个问题是希望我能得到某种明确的答案。如果没有活动或上下文引用,真的不可能访问资源吗?如果只需要访问一些与UI无关的值、资产或字符串,那么传递这样的引用会导致代码过于复杂。再加上那些可能被吊死的人。此外,这完全破坏了各种设计模式,如单例,在获取示例时必须提供参数。放置静态引用那么,有没有办法,或者整个社区只是生活在这个问题。
bvhaajcl1#
您的资源被捆绑到一个上下文中,这是一个事实,您无法更改。您可以执行以下操作:扩展Application,获取应用程序上下文并将其用作静态帮助器。
Application
public class App extends Application { private static Context mContext; public static Resources getResources() { return mContext.getResources(); } public void onCreate() { super.onCreate(); mContext = getApplicationContext(); } }
您的清单:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="your.package.path.to.App">
disbfnqx2#
让你的Application类成为一个singleton并使用它。它是一个Context。所有的资源都绑定到你的应用,所以你需要一个Context引用。如果你不想动态加载字符串等,你可以在singleton类中预加载它们。
Context
oug3syen3#
如果其他响应不起作用,我想您可以使用来自某个UI元素(如textView.getContext())的上下文。
3条答案
按热度按时间bvhaajcl1#
您的资源被捆绑到一个上下文中,这是一个事实,您无法更改。
您可以执行以下操作:
扩展
Application
,获取应用程序上下文并将其用作静态帮助器。您的清单:
disbfnqx2#
让你的
Application
类成为一个singleton并使用它。它是一个Context
。所有的资源都绑定到你的应用,所以你需要一个Context
引用。如果你不想动态加载字符串等,你可以在singleton类中预加载它们。oug3syen3#
如果其他响应不起作用,我想您可以使用来自某个UI元素(如textView.getContext())的上下文。