Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从onCreate方法更改全局变量_Java_Android_Global Variables - Fatal编程技术网

Java 从onCreate方法更改全局变量

Java 从onCreate方法更改全局变量,java,android,global-variables,Java,Android,Global Variables,这似乎是个小问题,但我不知道如何处理 我在xml文件中创建了一个字符串数组。接下来,我想将此数组导入字符串[],我是这样做的: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.releases); // array from XML String[] rlsMixTitle

这似乎是个小问题,但我不知道如何处理

我在xml文件中创建了一个字符串数组。接下来,我想将此数组导入字符串[],我是这样做的:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.releases);

    // array from XML
    String[] rlsMixTitleArr0 = getResources().getStringArray(R.array.releasesMixTitle);
    rlsMixTitleArr = rlsMixTitleArr0;

    // rest of program...
}
rlsmixtitlerar
在上述方法中声明为:

static String[] rlsMixTitleArr = new String[] {};
我已经通过Toast消息测试了全局变量rlsmixtitlarr确实得到了正确更新。但是,问题是,当我尝试从另一个方法(而不是onCreate)访问rlsmixtitlarr时,它就像根本没有被更新过一样,它只是一个空数组(因为它是以这种方式在顶部声明的)。您应该认为onCreate是程序启动时首先发生的事情,因此全局变量将被更新(并且可以被其他方法使用)。据我所知,您无法从onCreate方法上面的资源中获得一些信息。所以我现在被卡住了


如何使其工作?

尝试为静态数组创建一个访问器,并检查它是否已填充。这样,阵列就可以按需创建,而不是在事件处理程序中创建,而事件处理程序应该在需要之前创建阵列

static String[] rlsMixTitleArr = null;


public static String[] getRlsMixTitleArray(){
    if ( rlsMixTitleArray == null ) {
        rlsMixTitleArray = getResources().getStringArray(R.array.releasesMixTitle);
    }

    return rlsMixTitleArray;
}

谢谢你的回答,但恐怕不行。首先,我必须从方法中删除“static”以使其无错误。其次,当我调用这个方法时,我得到了一个NullPointerException。。。getResources()是一个实例方法,那么?那么为什么不调用对象构造函数中的数组填充行呢?//编辑-不,这仍然不能解决在它被创建之前寻找它的问题。你能使getResources()成为静态的吗?我可能会用另一种方法——如果可能的话,去掉静态的。RlxMixtLearr需要是静态的吗?@Angie我认为我不能以任何方式更改getResources,因为它是一个内置方法。不是说我100%肯定。@mouser不,我不认为它需要是静态的。现在我已经用rlsmixtitlerar删除了所有静态的东西,但是它仍然不起作用。你还想从哪个方法访问它?(无法想象在onCreate()之前会调用一个)。还有什么特殊原因导致您没有直接将数组加载到“rlsmixtitlerar”中?