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

  • Wie bekomme ich Akzentfarbe programmgesteuert?
  • Verwenden einer SQLite-Datenbank in Libgdx
  • Cookie-Manager verursacht tödliches Signal 11
  • Android WiFi Hotspot Client-Verbindung Ereignisse
  • Android ACTION_IMAGE_CAPTURE Absicht
  • Wie kann man die Speicherbeschränkung von GPU für die hochauflösende Bildverarbeitung auf GPU behandeln?
  • 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; } 

  • Vermeiden Sie doppelte Aktivitäten
  • Implementieren eines File Picker in Android und Kopieren der ausgewählten Datei an einen anderen Ort
  • Steuern Sie den Standard-Musik-Player von Android oder einem anderen Musik-Player
  • Streaming mit Android MediaPlayer im SDK 8
  • Was ist der Unterschied zwischen src und Hintergrund von ImageView
  • ListFragment akzeptiert mein Layout nicht
  • 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.