Android在另一个方法上使用字符串数组

时间:2010-05-11 14:05:45

标签: android arrays scope

我试图在按下按钮后进行具有多选对话框的活动。在那里,您可以从一系列事物中进行选择。但是在对话框出现之前,这些内容都是通过Web方法接收的。

所以我在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 :(得分:0)

如果你使用showDialog并想要活动管理对话框(你应该这样做),那么你必须实现onCreateDialog来实际创建对话框。对于每个对话框,都会调用一次。每次调用showDialog()时都会调用onPrepareDialog。所以更新显示字符串数组的对话框的代码应该放在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;
    }

}

答案 1 :(得分:0)

使字符串数组成为类成员,只需在onCreate中填充它。如果数组永远不会改变,你可以将它加载到onCreateDialog的对话框中,如果它可以在对话框的调用之间改变,那么你应该在onPrepareDialog中进行。

所以在你的班级中定义:

private String mDialogStrings[];
然后在onCreate中写道:

mDialogStrings = new String[numItems];
mDialogStrings[0] = string1;
etc...