En mi Android de código, me inflar la interfaz gráfica de usuario y almacenar todos los sub-elementos en una clase diferente. En esa clase, quiero agregar un método para leer una entrada del usuario desde. Yo traté de seguir algo como en este enlace pero no importa lo que haga, todo se reduce a copiar un valor final en un no valor final. Yo, sin embargo, acerca de la creación de otro gui pero no podía aletas de una manera de hacerlo. Aquí está el método que tengo ahora:

private String setText(int id){
        AlertDialog.Builder alert = new AlertDialog.Builder(this.show);
        final EditText input = new EditText(this.show);
        alert.setView(input);
        String out;
        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            //@Override
            public void onClick(DialogInterface dialog, int which) {
                Editable value = input.getText();
                out = value.toString();
                //TODO Auto-generated method stub

            }
        });

    }
}

Que puedo utilizar para devolver un string en otro método que establezca el valor de la TextView.


Traté de hacer el siguiente truco:

private String setText(){

    AlertDialog.Builder alert = new AlertDialog.Builder(this.show);
    final EditText input = new EditText(this.show);
    alert.setView(input);
    String out;
    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            input.setText("canceled");
        }
    });
    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {


        }
    });
    alert.show();
    String toSend = input.getText().toString();
    this.maxT.setText(toSend);
    return toSend;

maxT es un TextView campo. La aplicación simplemente coloque una cadena vacía. Me imagino que debo esperar hasta que el AlertDialog se cierra, estoy buscando una manera de hacerlo.

  • puede que desee enviar una intención que contiene el valor que se almacena en «fuera» cuando se pulsa el botón OK.
InformationsquelleAutor Yotam | 2011-04-21

3 Comentarios

  1. 6

    Acaba de establecer el id de su Vista y de referencia es:

    private String setText(int id){
        AlertDialog.Builder alert = new AlertDialog.Builder(this.show);
        EditText input = new EditText(this.show);
        input.setId("myInput");        
        alert.setView(input);
        String out;
        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            //@Override
            public void onClick(DialogInterface dialog, int which) {
                EditText input = (EditText) dialog.findViewById("myInput");
                Editable value = input.getText();
                out = value.toString();               
    
            }
        });
    
    }

    }

    Vista: setId() de la API

    Diálogos onClick: onClick() de la API

    • Gracias por la repetición. He intentado la solución, pero no funcionó. En primer lugar, me puede poner una cadena en una ID int (acabo de poner un número de teléfono) en Segundo lugar, puedo usar findViewById en Diálogo por la razón que sea. Yo no sé en qué me he equivocado… traté de evitar que pero no funcionó (mira en mi edición de la pregunta)
    • Lo consiguió. Me han llamado de otra función. He leído un poco y se encontró que el sistema operativo android no permite la GUI de la celebración.
    • No hay findViewbyId en DialogInterface. Debe ser getActivity().findViewById
    • de fundición o el cuadro de diálogo para un diálogo y el uso findViewById
    • En realidad lo que @Blundell dice es correcto, usted necesita para lanzar el DialogInterface porque el EditText se agrega al cuadro de Diálogo, no a la Actividad.
    • Por ahora, el setId función requiere IdRes entero. En otras palabras, debe ser declarada en el archivo de recursos y el valor real se genera en tiempo de compilación. stackoverflow.com/a/36074347/1042836 muestra cómo hacerlo.

  2. 2

    Puede crear un cuadro de diálogo personalizado y acceso a la ID de esa manera. Si desea utilizar un cuadro de diálogo alerta de que usted puede probar esto:

    Primero crear un diseño con una sola editText:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
    <EditText android:text="Stateful"
    android:id="@+id/EditText01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    </EditText>
    </LinearLayout>

    Luego inflar este diseño como en:

    AlertDialog.Builder builder= new AlertDialog.Builder(this);
    LayoutInflater inflater= getLayoutInflater();
    final View myView= inflater.inflate(R.layout.alert_dialog_text_entry, null);
    builder.setTitle("About");
    builder.setMessage(alertMessage+"Version: "+versionName);
    builder.setView(myView);
    AlertDialog alert= builder.create();
    • Gracias, que buena idea, me lo han implementado de otra forma, pero fue útil para mí.
  3. 0

    Buen post by Tony Stark aquí y usted puede embellecer su diálogo mediante la adición de un icono .. asegúrese de que tiene la imagen en su carpeta de dibujable.

     builder.setTitle("Message Sent!").setCancelable(false).setNegativeButton("Close",new DialogInterface.OnClickListener() 
                                {public void onClick(DialogInterface dialog, int id) {dialog.cancel();}});
                                AlertDialog alert = builder.create();
                                alert.setIcon(R.drawable.send);//call your image for your icon here
                                alert.show();

    Ejemplo
    Conseguir una Cadena de usuario en un cuadro de diálogo emergente

Dejar respuesta

Please enter your comment!
Please enter your name here