我想我在这里非常密切地关注the Android tutorial。我有一个ListActivity
,在某个时候会调用showDialog(DIALOG_EXPORT);
。我的onCreateDialog()
创建了一个对话框,设置了一个xml视图,然后尝试对该对话框的元素执行某些操作,但直接在findViewById()
之后一切都是null
。为什么呢?
这里是代码:
protected Dialog onCreateDialog(int id) {
switch(id){
case DIALOG_EXPORT:
final Dialog dial = new Dialog(this);
dial.setContentView(R.layout.export_dialog);
dial.setTitle(R.string.dialog_export_title);
EditText eFile = (EditText) findViewById(R.id.e_dialog_export);
Button bOkay = (Button) findViewById(R.id.b_export_okay);
Button bCancel = (Button) findViewById(R.id.b_export_cancel);
<here all View elements are empty>
...
return dial;
...
}
}
答案 0 :(得分:2)
您需要使用dial.findViewById()
而非findViewById()
答案 1 :(得分:1)
您需要给视图充气。你需要做这样的事情:
@Override
protected Dialog onCreateDialog(int id) {
LayoutInflater inflator = LayoutInflater.from(context);
View view = inflator.inflate(R.layout.yourview, null);
Button positive = (Button)view.findViewById(R.id.btn_positive);
Button negative = (Button)view.findViewById(R.id.btn_negative);
positive.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
removeDialog(0);
}
});
negative.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
removeDialog(0);
}
});
AlertDialog dialog = new AlertDialog.Builder(this).create();
dialog.setView(view);
return dialog;
}
答案 2 :(得分:0)
您忘记按照教程扩充对话框的布局。再看看它。它在那里。在不夸大布局的情况下,其他视图将返回null。