Изменение глобальной переменной из метода onCreate - PullRequest
0 голосов
/ 12 июля 2011

Это может показаться небольшой проблемой, но я не знаю, как с этим справиться.

Я создал массив строк в 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...
}

rlsMixTitleArr объявлено над этим методом как:

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

Я проверил через сообщение Toast, что глобальная переменная rlsMixTitleArr действительно обновляется правильно.Однако проблема заключается в том, что когда я пытаюсь получить доступ к rlsMixTitleArr из другого метода (не onCreate), он как будто не обновляется вообще, а просто является пустым массивом (поскольку он объявлен таким образом вверху).Вам следует подумать, что onCreate - это то, что происходит первым при запуске программы, и поэтому глобальная переменная будет обновлена ​​(и может использоваться другими методами).И, насколько я знаю, вы не можете получить что-то из ресурсов выше метода onCreate.Так что я застрял сейчас.

Как мне заставить это работать?

1 Ответ

0 голосов
/ 12 июля 2011

Попробуйте вместо этого создать аксессор для статического массива, проверив, что он заполнен.Таким образом, массив создается по требованию, а не в обработчике событий, который должен создать его, прежде чем вы захотите.

static String[] rlsMixTitleArr = null;


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

    return rlsMixTitleArray;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...