我写一个自定义对话框,并试图从其父活动的一些数据,但我总是得到空当我打电话getOwnerActivity,谁能告诉我,为什么出现这种情况?为什么我可以在DemoDialog中显示数据而无法显示来自TestDialogActivity的数据?getOwnerActivity返回null定制对话框
非常感谢提前。
DialogTestActivity
public class DialogTestActivity extends Activity {
List<String> data = new ArrayList<String>();
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
showDialog(0);
}
});
}
public List<String> getData(){
data.add("one");
data.add("two");
data.add("three");
return data;
}
public Dialog onCreateDialog(int id){
return new DemoDialog(this);
}
}
DemoDialog
public class DemoDialog extends Dialog {
Context context;
public DemoDialog(Context context) {
super(context);
setContentView(R.layout.dialog);
this.context = context;
setTitle("Delete City");
ListView list = (ListView)findViewById(R.id.list);
ArrayAdapter<String> aa = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_multiple_choice, ((DialogTestActivity)getOwnerActivity()).getData());
// ArrayAdapter<String> aa = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_multiple_choice, getData());
list.setAdapter(aa);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
private List<String> getData(){
List<String> data = new ArrayList<String>();
data.add("1");
data.add("2");
return data;
}
}
注:我指的是对话的OnCreate()调用。但是,如果失败,您可能需要将它放在onAttachedToWindow()中,因为Android实际上可能会随意推迟其魔术。也就是说,如果您需要从构造函数访问所有者,则所有者为“context”,因此只需使用“context”:) – Sajid
感谢您的回复,Sajid。我试图按照你的建议,但sitll得到空,你能分享你的代码吗? – eric2323223
作为上面的编辑添加。毕竟,你必须检查onAttachToWindow()。 – Sajid