Android 如何使用xml布局获取对自定义对话框中创建的按钮的引用?

Android 如何使用xml布局获取对自定义对话框中创建的按钮的引用?,android,button,reference,dialog,Android,Button,Reference,Dialog,我有一个活动,用户可以通过点击标签附近的按钮来更新特定信息。这个按钮会触发一个对话框,在这个对话框中,我有一些字段可以获得用户输入,还有一个按钮可以完成编辑 我的问题是,我无法在特定于对话框的xml布局中获取对按钮declare的引用。按钮引用返回null。按照一些代码片段进行说明 触发事件以生成对话框的按钮在活动中声明为实例变量,如下所示: private Button bConfigurarCarro; 而不是onCreate方法: bConfigurarCarro = (Button)f

我有一个活动,用户可以通过点击标签附近的按钮来更新特定信息。这个按钮会触发一个对话框,在这个对话框中,我有一些字段可以获得用户输入,还有一个按钮可以完成编辑

我的问题是,我无法在特定于对话框的xml布局中获取对按钮declare的引用。按钮引用返回null。按照一些代码片段进行说明

触发事件以生成对话框的按钮在活动中声明为实例变量,如下所示:

private Button bConfigurarCarro;
而不是onCreate方法:

bConfigurarCarro = (Button)findViewById(R.id.bConfigurarCarro);
 bConfigurarCarro.setOnClickListener(configuraCarroListener);
这将正确触发事件以创建对话框:

protected OnClickListener configuraCarroListener = new OnClickListener(){
public void onClick(View v) {
showDialog(CARRO_DIALOG_ID);
Log.d(TAG, "Executando evento do botão de configuração de carro no abastecimento.");
            }
        };
而不是像这样创建对话框覆盖onCreateDialog方法:

@Override
protected Dialog onCreateDialog(int id) {
  switch (id) {
    case TIME_DIALOG_ID:
        return new TimePickerDialog(this, mTimeSetListener, hora, minuto, false);
    case DATE_DIALOG_ID:
        return new DatePickerDialog(this, mDateSetListener, ano, mes, dia);
    case CARRO_DIALOG_ID:
        Log.d(TAG, "Criando dialog de cadastro de carro.");
        dialogCarro = new Dialog(this);
        dialogCarro.setContentView(R.layout.novo_carro_dialog);
        bSalvarCarro = (Button)findViewById(R.id.botaoSalvarCarro);
        bSalvarCarro.setOnClickListener(salvarCarroListener);
        dialogCarro.setTitle("Carro");
        dialogCarro.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
        Log.d(TAG, "Dialog de cadastro de carro criado retornando...");
        return dialogCarro;
    }
        return null;
}
NullPointer触发的特定行是在尝试获取上面的按钮引用之后,我尝试设置setOnClickListener

bSalvarCarro = (Button)findViewById(R.id.botaoSalvarCarro);
bSalvarCarro.setOnClickListener(salvarCarroListener);
BSALVARCRO为空

我试图在上面使用代码行设置的对话框的xml布局:

dialogCarro.setContentView(R.layout.novo_carro_dialog);
这是一个(novo_carro_dialog.xml):



正如您所看到的,按钮是用id botaoSalvarCarro声明的,但是尝试获取对它的引用时返回null。我对此感到有点困惑,好像我拿出了一行,这行设置了正确显示对话的侦听器,所以。如何正确获取此按钮的引用?

谢谢。成功了。真不敢相信我错过了,因为你可以想象我是Android新手。5分钟后,我将能够将此标记为正确答案。
dialogCarro = new Dialog(this);
dialogCarro.setContentView(R.layout.novo_carro_dialog);
bSalvarCarro = (Button)dialogCarro.findViewById(R.id.botaoSalvarCarro);
dialogCarro = new Dialog(this);
dialogCarro.setContentView(R.layout.novo_carro_dialog);
bSalvarCarro = (Button)dialogCarro.findViewById(R.id.botaoSalvarCarro);