Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Findviewbyid devuelve null en un diálogo

Tengo un diálogo personalizado y cuando intento conseguir el valor de un EditText devuelve null.

Esta línea devuelve null

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; } 

  • ¿Cómo establecer el tema en ProgressDialog?
  • "El plug-in org.eclipse.jdt.ui no pudo cargar la clase org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart." Problema en adt (v22.6.2)
  • ¿Debo importar android.graphics.camera o android.hardware.camera?
  • Redimensionamiento del título suave de la barra de herramientas de reducción personalizada
  • ¿Cómo obtener la URL redireccionada de OkHttp3?
  • Reconocer las letras dadas por una persona usando java
  • Android: java.net.DatagramSocket.bind: Excepción de argumento no válido
  • Alternativa a la biblioteca de lectores QR de zxing para Java / Android?
  • 4 Solutions collect form web for “Findviewbyid devuelve null en un diálogo”

    Prueba esto:

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

    Usted tiene que decir en qué vista para encontrar el id. De lo contrario, tratará de encontrar el identificador en la vista desde la disposición xml inflada por setContentView (normalmente declarado en onCreate )

    En mi caso: Primero tengo que llamar al

    Dialog.show (),

    Y sólo después de que yo era capaz de utilizar

    Dialog.findviewById (R.id.myID).

    Si me faltó para llamar al show (), que tengo un nulo de nuevo con findViewByID.

    Me enfrenté a 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 código de seguimiento:

     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); 

    Yo 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 devolvía valor nulo, pero luego usé dialog.findviewbyid(R.id.etBankName) y funcionó.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.