我做的是
public class MainActivity extends Activity {
private final String[] types = { "s1", "s2", "s3" };
但我希望将这些值保留在res/values/types.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array
name="types">
<item>s1</item>
<item>s2</item>
<item>s3</item>
</string-array>
</resources>
所以我改为
public class MainActivity extends Activity {
private final String[] types = getResources().getStringArray(R.array.types);
但是我在应用启动时会遇到异常
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
所以我想唯一的解决方案是在onCreate
中加载该数组?如果是这样,那么在Activity重新开始之后我应该再加载它吗?
答案 0 :(得分:0)
你是对的,onCreate是初始化变量的好地方。显然,在正确初始化activity(context)之前,不能使用getResources()方法。
但是,如果您不需要超级有效的代码,只需在需要阵列时使用NET START Tomcat*
,或者可以创建方法
getResources().getStringArray(R.array.types)
答案 1 :(得分:0)
问题在于,您未在创建活动时尝试调用Context方法。 尝试在OnCreate()中调用它:)