findviewbyid devuelve nulo en un diálogo

Tengo un diálogo personalizado y cuando trato de obtener el valor de EditText, devuelve null.

Esta línea devuelve nulo

EditText et = (EditText)findViewById(R.id.username_edit); 

Aquí está el código en su totalidad.

 protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_TEXT_ENTRY: LayoutInflater factory = LayoutInflater.from(this); final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null); return new AlertDialog.Builder(TicTacToe.this) //.setIconAttribute(android.R.attr.alertDialogIcon) .setTitle(getTitleText()) .setView(textEntryView) .setPositiveButton("JOIN GAME", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { try { EditText et = (EditText)findViewById(R.id.username_edit); playerName = et.getText().toString(); } catch (Exception e) { } } }) .create(); } return null; } 

Prueba esto:

 EditText et = (EditText)textEntryView.findViewById(R.id.username_edit); 

Tienes que decir en qué vista para encontrar la identificación. De lo contrario, intentará encontrar el ID en la vista desde el diseño xml inflado por setContentView (generalmente declarado en onCreate )

En mi caso: primero debo llamar al

dialog.show (),

y solo después de eso pude usar

dialog.findviewById (R.id.myID).

Si me perdí para llamar al progtwig (), obtuve un nulo con findViewByID.

Enfrenté un problema similar. En mi caso, tuve un diálogo con diseño personalizado y en este diseño tenía un radioButton. Para resolver eso, utilicé el siguiente código:

 View dialogLayout = factory.inflate(R.layout.dialog_layout, null); AlertDialog.Builder dialog = new AlertDialog.Builder(context); dialog.setView(dialogLayout); RadioButton radiobt = (RadioButton) dialogLayout.findViewById(R.id.radioBt); 

Estaba teniendo el mismo problema, que se presentó en el siguiente fragmento de código:

 final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.addbank_dialog); dialog.show(); Button btnSaveBank = (Button)dialog.findViewById(R.id.btnSaveBank); final EditText etBankName = (EditText)dialog.findViewById(R.id.etBankName); btnSaveBank.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try{ String bank = etBankName.getText().toString(); SharedCommonData.dbOps.saveBankInDB(bank); } catch(Exception e){ e.printStackTrace(); } Toast.makeText(SharedCommonData.context, "Bank Saved", Toast.LENGTH_SHORT); refreshBanks(); dialog.dismiss(); } }); 

etBankName devolvió valor nulo, pero luego usé dialog.findviewbyid(R.id.etBankName) y funcionó.

En mi caso tuve este error porque estaba redeclarando una variable inicializada

En la actividad principal tuve:

 EditText cityName; 

Y en onCreate:

 EditText cityName = (EditText)findViewById(R.id.cityName); 

¡Acaba de eliminar EditText y navegar sin problemas!