Android использование строкового массива в другом методе - PullRequest
0 голосов
/ 11 мая 2010

Я пытаюсь создать действие, в котором есть диалог с несколькими вариантами ответов после нажатия кнопки. Там вы выбираете из списка вещей. Но эти вещи принимаются от веб-метода до появления диалогового окна.

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

@Override
 protected Dialog onCreateDialog(int id)
//Here is where the array is loaded to the multiple select dialog
etc


@Override
public void onCreate(Bundle savedInstanceState)
//Here is where i initialise the array and get its contents
etc

Я не могу инициализировать свой массив при запуске класса, потому что я еще не знаю его размер. Это как-то связано с областями действия моих переменных, и я очень запутался

Ответы [ 2 ]

0 голосов
/ 11 мая 2010

сделать массив строк членом класса, просто заполните его в onCreate. Вы можете загрузить его в диалог в onCreateDialog, если массив никогда не изменяется, если он может меняться между вызовами диалога, тогда вам следует сделать это в onPrepareDialog.

Итак, в вашем классе определите:

private String mDialogStrings[];

затем в onCreate что-то вроде:

mDialogStrings = new String[numItems];
mDialogStrings[0] = string1;
etc...
0 голосов
/ 11 мая 2010

если вы используете showDialog и хотите, чтобы диалоги, управляемые активностью (вы должны это сделать), должны реализовать onCreateDialog, чтобы фактически создать диалог. Это будет вызвано один раз для каждого вашего диалога. onPrepareDialog вызывается каждый раз, когда вы вызываете showDialog (). Таким образом, код для обновления диалогового окна, показывающего массив строк, должен помещаться в onPrepareDialog, а код для создания диалогового окна - в onCreateDialog.

public Dialog onCreateDialog(int id) {
    switch(id) {
        case MY_DIALOG:
            Dialog d = new Dialog(this);
            return d;
    }
}

public void onPrepareDialog(Dialog d, int id) {
    switch(id) {
        case MY_DIALOG:
            d.setSomeStringArray();
            break;
    }

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