【问题标题】:How to load xml resources to Activity field如何将 xml 资源加载到 Activity 字段
【发布时间】:2015-06-18 14:18:34
【问题描述】:

我做的是

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

【问题讨论】:

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


    【解决方案1】:

    问题是您在未创建 Activity 时尝试调用 Context 方法。 尝试在 OnCreate() 中调用它:)

    【讨论】:

      【解决方案2】:

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

      但是,如果您不需要超级有效的代码,您可以在需要数组时简单地使用getResources().getStringArray(R.array.types),或者您可以创建一个方法

      private String[] getTypes() {
          return getResources().getStringArray(R.array.types);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-16
        • 2012-06-04
        • 1970-01-01
        • 2018-02-20
        • 2011-03-01
        • 2011-06-18
        相关资源
        最近更新 更多