所以我想在我的项目中获取一个字符串资源但是当我调用context.getResources().getString(...)
时,我得到一个NullPointerException
。在调试模式下,我发现上下文不是null但是查看其成员,我发现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);
}
}
我必须按CommonsWare的建议将someClass
的初始化移至super.onCreate()
之后。感谢。
答案 0 :(得分:25)
如果我不得不猜测,你试图在初始化程序中调用它。在您的活动返回getResources()
来电之前,请勿尝试使用super.onCreate()
。