Multiple EditText objects in AlertDialog

后端 未结 3 1612
暗喜
暗喜 2020-12-08 04:18

I\'m working on a project for college that will let a user place a point on a map and then set the title and description for the overlay object. The problem is, the second <

相关标签:
3条回答
  • 2020-12-08 04:46

    A Dialog only contains one root View, that's why setView() overwrites the first EditText. The solution is simple put everything in one ViewGroup, for instance a 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
    

    (This is a basic example, but it should get you started.)

    You should take note of the nomenclature difference between a set and add method. setView() only holds one View, the same is similar for setMessage(). In fact this should be true for every set method, what you're thinking of are add commands. add methods are cumulative, they build a list of everything you push in while set methods are singular, they replace the existing data.

    0 讨论(0)
  • 2020-12-08 04:55

    You can build your layout that contains two EditText, inflate it with a LayoutInflater and use that as the View of your 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();
    

    enter image description here

    you can add your EditText programmatically too like this:

    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);
    
    0 讨论(0)
  • 2020-12-08 05:10

    Code for create a popup with two EditText using 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();
    
        }
    
    0 讨论(0)
提交回复
热议问题