如何将xml资源加载到Activity字段

时间:2015-06-18 14:18:34

标签: android android-activity android-xml android-resources android-lifecycle

我做的是

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重新开始之后我应该再加载它吗?

2 个答案:

答案 0 :(得分:0)

你是对的,onCreate是初始化变量的好地方。显然,在正确初始化activity(context)之前,不能使用getResources()方法。

但是,如果您不需要超级有效的代码,只需在需要阵列时使用NET START Tomcat* ,或者可以创建方法

getResources().getStringArray(R.array.types)

答案 1 :(得分:0)

问题在于,您未在创建活动时尝试调用Context方法。 尝试在OnCreate()中调用它:)