Findviewbyid gibt null in einem Dialog zurück

Ich habe einen benutzerdefinierten Dialog und wenn ich versuche, den Wert eines EditText zu erhalten, gibt es null zurück.

Diese Zeile gibt null zurück

  • Android Lollipop - verändertes Verhalten von SQLite
  • Android Back Button und Progress Dialog
  • Android-Facebook-Chat-Beispiel-Projekt
  • So verwenden Sie eine vorhandene Datenbank mit einer Android-Anwendung
  • MediaPlayer-Fehler: Pause in Zustand 64 aufgerufen
  • Dependency org.json: json: 20090211 wird für Debug ignoriert, da es in Konflikt mit der internen Version von Android geliefert werden kann
  • EditText et = (EditText)findViewById(R.id.username_edit); 

    Hier ist der Code in seiner Gesamtheit.

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

  • Eine neuere Version von com.android.support:appcompat-v7 als 23.2.1 steht zur Verfügung: 24.0.0-alpha1
  • Füge ViewPagerIndicator zu Android Studio hinzu
  • Dynamisch Elemente zu einer Liste hinzufügen Android
  • Android Get Land Emoji Flagge mit Gebietsschema
  • Android Studio: "Verwenden Sie Standard-Gradle Wrapper" vs "Verwenden Sie benutzerdefinierte Gradle Wrapper"
  • Was sind die besten Möglichkeiten, Android Apps zu stürzen?
  • 4 Solutions collect form web for “Findviewbyid gibt null in einem Dialog zurück”

    Versuche dies:

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

    Sie müssen sagen, in welcher Ansicht die ID zu finden. Andernfalls wird es versuchen, die ID in der Ansicht aus dem XML-Layout zu finden, das von setContentView aufgeblasen wird (normalerweise in onCreate )

    In meinem Fall: Zuerst muss ich das anrufen

    Dialog.show (),

    Und erst danach konnte ich es benutzen

    Dialog.findviewById (R.id.myID).

    Wenn ich es versäumt habe, die Show () anzurufen, als ich einen Rückstand mit findViewByID bekam.

    Ich hatte ein ähnliches Problem. In meinem Fall hatte ich einen Dialog mit benutzerdefiniertem Layout und in diesem Layout hatte ein RadioButton. Um das zu lösen, habe ich den folgenden Code benutzt:

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

    Ich hatte das gleiche Problem, das sich im folgenden Code-Snippet präsentierte:

     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 gab den Nullwert zurück, aber dann habe ich dialog.findviewbyid(R.id.etBankName) und es funktionierte.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.