从onCreate方法更改全局变量

时间:2011-07-11 20:37:35

标签: java android global-variables

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

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

@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...
}

rlsMixTitleArr在此方法上方声明为:

static String[] rlsMixTitleArr = new String[] {};

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

我如何让它运作?

1 个答案:

答案 0 :(得分:0)

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

static String[] rlsMixTitleArr = null;


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

    return rlsMixTitleArray;
}