Android 调用context.getResources()返回null
所以我试图在我的项目中获取字符串资源,但是当我调用Android 调用context.getResources()返回null,android,nullpointerexception,android-context,Android,Nullpointerexception,Android Context,所以我试图在我的项目中获取字符串资源,但是当我调用context.getResources().getString(…)时,我得到了一个NullPointerException。在调试模式下,我发现上下文不是空的,但查看其成员,我发现mResources是空的。为什么没有为活动上下文加载资源 编辑 显然,这就是引发异常的原因 public class MyActivity extends Activity { SomeClass someClass = new SomeClass(th
context.getResources().getString(…)
时,我得到了一个NullPointerException
。在调试模式下,我发现上下文不是空的,但查看其成员,我发现mResources
是空的。为什么没有为活动上下文加载资源
编辑
显然,这就是引发异常的原因
public class MyActivity extends Activity {
SomeClass someClass = new SomeClass(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
public class SomeClass {
private final Context mContext;
public SomeClass(Context context) {
mContext = context;
mContext.getResources().getString(R.string.app_name);
}
}
我必须将
someClass
的初始化移动到super.onCreate()
之后,正如所建议的那样。谢谢。如果非要我猜的话,你是在试图用初始值设定项来调用它。在活动中的super.onCreate()
调用返回之前,不要尝试使用getResources()
。您是如何实例化正在用作上下文的活动的?您在活动生命周期中调用的确切位置是getResources()
?您确定传递了正确的ID,该ID属于String.xml吗?@laalto像onCreate
一样实例化?像在创建类的对象时一样实例化。是框架做的,还是您自己使用了new
?问题解决了。谢谢我在活动中有一个默认初始化的成员,我试图从其构造函数调用该方法。