Java 从onCreate方法更改全局变量
这似乎是个小问题,但我不知道如何处理 我在xml文件中创建了一个字符串数组。接下来,我想将此数组导入字符串[],我是这样做的: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
@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”中?