【发布时间】:2014-07-15 14:19:46
【问题描述】:
我有一个特殊的类,它保存静态信息并根据特殊情况进行计算。这是一个特殊的自定义类,它不扩展活动的任何部分或android环境。
因为这个类从未真正被实例化,所以它主要在static 级别上引用。这对我来说仍然很重要,因为我持有一些对应用程序流程至关重要的staticenums。
问题来了: 因为该类没有扩展 android 活动生命周期,所以我无法从应用程序的资源文件中引用任何字符串值。 (我将字符串存储在自定义 XML 文件中作为特殊资源)
一切都是这样的:
枚举的自定义类:
public class CreepIDs {
public static Context context = App.getContext();
public static enum CreepId {
ROBODEE(0, resourceString(R.creeps.robodee));
public final int id;
public final String name;
CreepId(int id, String name){
this.id = id;
this.name = name;
};
};
public static String resourceString(int id){
return context.getResources().getString(id);
}
}
APP 类扩展应用:
public class App extends Application{
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
}
public static Context getContext(){
return mContext;
}
}
到目前为止,我已经使用调试功能逐步完成了该应用程序,App.getContext() 始终返回一个 Context 值为 null。我不知道为什么。 我需要能够从一个不扩展 android 生命周期任何部分的类中引用R.creeps.robodee。
我会通过构造函数传递上下文,但由于 CreepId 是 static enum CreepIDs 实际上并没有被实例化。我只从主要活动中引用它。
您认为这里最好的解决方案是什么?
【问题讨论】:
-
我认为 getApplicationContext 返回 null 因为它是在 onCreate 方法中调用的,该上下文尚未实例化。
-
您能否举例说明如何在应用程序中使用 Enum?
标签: java android enums resources android-context