我试图在按下按钮后进行具有多选对话框的活动。在那里,您可以从一系列事物中进行选择。但是在对话框出现之前,这些内容都是通过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
当课程开始时我无法初始化我的数组,因为我还不知道它的大小。 这必须对我的变量的范围做一些事情,我很困惑
答案 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...