Ich arbeite an einem Projekt für das College, bei dem ein Benutzer einen Punkt auf einer Karte platzieren und dann den Titel und die Beschreibung für das Overlay-Objekt festlegen kann. Das Problem ist das zweite EditText Box überschreibt die erste. Hier ist mein Code für das Dialogfeld.
//Make new Dialog
AlertDialog.Builder dialog = new AlertDialog.Builder(mapView.getContext());
dialog.setTitle("Set Target Title & Description");
dialog.setMessage("Title: ");
final EditText titleBox = new EditText(mapView.getContext());
dialog.setView(titleBox);
dialog.setMessage("Description: ");
final EditText descriptionBox = new EditText(mapView.getContext());
dialog.setView(descriptionBox);
Jede Hilfe wäre willkommen!! Vielen Dank!
Sam
Aus diesem Grund enthält ein Dialog nur eine Root-Ansicht setView() überschreibt den ersten EditText. Die Lösung ist einfach alles in eine ViewGroup zu packen, zum Beispiel ein LinearLayout:
Context context = mapView.getContext();
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
// Add a TextView here for the "Title" label, as noted in the comments
final EditText titleBox = new EditText(context);
titleBox.setHint("Title");
layout.addView(titleBox); // Notice this is an add method
// Add another TextView here for the "Description" label
final EditText descriptionBox = new EditText(context);
descriptionBox.setHint("Description");
layout.addView(descriptionBox); // Another add method
dialog.setView(layout); // Again this is a set method, not add
(Dies ist ein einfaches Beispiel, aber es sollte Ihnen den Einstieg erleichtern.)
Beachten Sie den Nomenklaturunterschied zwischen a set und add Methode. setView() hält nur eine Ansicht, das gleiche gilt für setMessage(). Das sollte eigentlich für jeden gelten set Methode, woran Sie denken, sind add Befehle. add Methoden sind kumulativ, sie erstellen eine Liste von allem, was Sie währenddessen eingeben set Methoden sind singulär, sie ersetzen die vorhandenen Daten.
Ah, das ist brillant, danke, genau das, wonach ich gesucht habe, eine Frage: Gibt es eine Möglichkeit, über jedes Textfeld zu schreiben? Wie “Titel:” dann “Beschreibung:” ??
– Tom Selleck
13. Oktober 2012 um 20:52 Uhr
@Tomcelic ja, du kannst es tun, füge einfach der Reihe nach ein TextView, EditText, TextView und schließlich ein EditText hinzu, aber ich denke, die Verwendung des layoutInflator wäre besser
– K_Anas
13. Oktober 2012 um 21:02 Uhr
LinearLayout.VERTICAL OMG, ich wollte alles aus dem Fenster werfen und vor Qual schreien!!!
– Schockwelle
21. September 2018 um 16:03 Uhr
Sie können Ihr Layout erstellen, das zwei EditText enthält, und es mit einem aufblasen LayoutInflater und verwenden Sie das als Ihre Ansicht AlertDialog.
LayoutInflater factory = LayoutInflater.from(this);
//text_entry is an Layout XML file containing two text field to display in alert dialog
final View textEntryView = factory.inflate(R.layout.text_entry, null);
final EditText input1 = (EditText) textEntryView.findViewById(R.id.EditText1);
final EditText input2 = (EditText) textEntryView.findViewById(R.id.EditText2);
input1.setText("DefaultValue", TextView.BufferType.EDITABLE);
input2.setText("DefaultValue", TextView.BufferType.EDITABLE);
final AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setIcon(R.drawable.icon).setTitle("EntertheText:").setView(textEntryView).setPositiveButton("Save",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
Log.i("AlertDialog","TextEntry 1 Entered "+input1.getText().toString());
Log.i("AlertDialog","TextEntry 2 Entered "+input2.getText().toString());
/* User clicked OK so do some stuff */
}
}).setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
/*
* User clicked cancel so do some stuff
*/
}
});
alert.show();
Sie können Ihren EditText auch programmgesteuert wie folgt hinzufügen:
LinearLayout layout = new LinearLayout(mapView.getContext());
layout.setOrientation(LinearLayout.VERTICAL);
final EditText titleBox = new EditText(mapView.getContext());
titleBox.setHint("Title");
layout.addView(titleBox);
final EditText descriptionBox = new EditText(mapView.getContext());
descriptionBox.setHint("Description");
layout.addView(descriptionBox);
dialog.setView(layout);
Im Ernst, jede Antwort sollte ein Bild des Ergebnisses enthalten. Ich habe nach so etwas gegoogelt. Und ich habe dieses Bild gesehen. Sofort angeklickt.
– Hochverehrter Herr
16. Juli 2018 um 20:10 Uhr
val alert = AlertDialog.Builder(this)
alert.setTitle("Buy Airtime")
alert.setMessage("Enter phone details and amount to buy airtime.")
val layout = LinearLayout(this)
layout.orientation = LinearLayout.VERTICAL
val mobileNoET = EditText(this)
mobileNoET.setSingleLine()
mobileNoET.hint = "Mobile Number"
layout.addView(mobileNoET)
val amountET = EditText(this)
amountET.setSingleLine()
amountET.hint = "Amount"
layout.addView(amountET)
val networkET = EditText(this)
networkET.setSingleLine()
networkET.hint = "Network"
layout.addView(networkET)
layout.setPadding(50, 40, 50, 10)
alert.setView(layout)
alert.setPositiveButton("Proceed") { _, _ ->
val mobileNo = mobileNoET.text.toString()
val amount = amountET.text.toString()
val network = networkET.text.toString()
Log.i("xxx",mobileNo )
Log.i("xxx",amount )
Log.i("xxx",network )
Toast.makeText(this, "Saved Sucessfully", Toast.LENGTH_LONG).show()
}
alert.setNegativeButton("Cancel") { dialog, _ ->
dialog.dismiss()
}
alert.setCancelable(false)
alert.show()
Zuko
Code zum Erstellen eines Popups mit zwei EditText mit Xamarin
public void dial()
{
AlertDialog alerta = new AlertDialog.Builder(this).Create();
LinearLayout layout = new LinearLayout(this);
layout.Orientation = Orientation.Vertical;
EditText factinput = new EditText(this);
alerta.SetMessage("Facturas Disponibles:");
layout.AddView(factinput);
EditText canttinput = new EditText(this);
alerta.SetMessage("Cantidad:");
layout.AddView(canttinput);
alerta.SetView(layout);
alerta.SetButton("Cancelar", (a, b) =>
{
AlertDialog cencelacion = new AlertDialog.Builder(this).Create();
cencelacion.SetMessage("Desea Cancelar");
cencelacion.SetButton("OK", (c, d) => { });
cencelacion.Show();
});
alerta.SetButton2("Aceptar", (ee, f) =>
{
AlertDialog confirmacion = new AlertDialog.Builder(this).Create();
confirmacion.SetMessage("Realizar Busqueda de Factura");
confirmacion.SetButton("OK", (c, d) => { });
confirmacion.Show();
}
);
alerta.Show();
}
11012300cookie-checkMehrere EditText-Objekte in AlertDialogyes