Java 如何从远离app';树根?
需要从非上下文类访问资源,而无需通过深层调用堆栈传递上下文 我已经阅读了关于这个主题的所有答案,但是这个课程不是从Java 如何从远离app';树根?,java,android,resources,Java,Android,Resources,需要从非上下文类访问资源,而无需通过深层调用堆栈传递上下文 我已经阅读了关于这个主题的所有答案,但是这个课程不是从活动创建的,它离它还很远。通过所有调用发送上下文的方式并不是一种变体,因为它需要通过许多类和方法发送上下文,而这些类和方法不需要了解上下文 我是否有机会访问资源,而不通过真正深入的调用堆栈传递上下文?需要静态方法吗?如果不可能以简单自然的方式从应用程序的任何位置获取应用程序资源,那将是一件令人惊讶的事情。您可以扩展Android的应用程序类,并将其作为一个单独的应用程序实现,从而使其
活动创建的,它离它还很远。通过所有调用发送上下文的方式并不是一种变体,因为它需要通过许多类和方法发送上下文,而这些类和方法不需要了解上下文
我是否有机会访问资源,而不通过真正深入的调用堆栈传递上下文?需要静态方法吗?如果不可能以简单自然的方式从应用程序的任何位置获取应用程序资源,那将是一件令人惊讶的事情。您可以扩展Android的应用程序类,并将其作为一个单独的应用程序实现,从而使其在全球范围内可用
public class SampleApplication extends Application {
private static SampleApplication INSTANCE;
@Override
public void onCreate() {
super.onCreate();
INSTANCE = this;
}
public static SampleApplication instance() {
return INSTANCE;
}
}
如果这样做,则需要在AndroidManifest.xml中进行一些工作。这将告诉框架加载您的应用程序,而不是默认应用程序
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourdomain"
android:versionCode="1"
android:versionName="1.0">
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:name=".SampleApplication">
<activity android:name=".SampleActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我不知道你是否试过这个,但它应该有用。我没有测试这段代码,因此可能需要进行一些调整,但您应该明白这一点。非常感谢。我已经做过了。返回存储此值的静态getter方法也适用于活动。但不管怎样,这看起来像是个骗局。我更希望能够从类加载器或类似的东西提供资源。
SampleApplication.instance().getResources();