martes, 3 de febrero de 2015

Capturar texto Edittext android

Que tal? el día de hoy les mostraré como capturar el texto de un EditText también conocido en Android como campo de texto, tal vez se estén haciendo la pregunta para que sirve un EditText, bien un EditText es un elemento muy importante en Android ya que nos permite la interacción con el usuario en la forma de recibir datos del usuario, por ejemplo se puede usar para recibir:
  • Nombres, Apellidos.
  • Edades
  • Números telefónicos.
  • Valores a operar (valor1 y valor2 que pueden ser sumados, restados, multiplicados, etc).
Para saber más acerca del EditText click aquí. Bien lo que haré el día de hoy es una aplicación en la cual ingresemos nuestro nombre o cualquier dato en un TextView y al pulsar un botón nos muestre Hola y nuestro nombre o el dato ingresado.
Pasos:
  1. Crear nuevo proyecto o editar existente (yo crearé uno).
  2. Insertar los tres elementos a utilizar en el layout EditText, Botón (Button), TextView.
  3. Asociar los elementos XML con sus objetos en Java.
  4. Escribir el código, para obtener los datos del EditText y mostrar en el TextView "Hola" seguido de los datos ingresados en el EditText todo esto al pulsar el Botón (Button).


1 Crear el nuevo proyecto, si quieres saber como crear un nuevo proyecto en Android Studio click aquí.

2 Insertar los tres elementos en el layout.
Ahora procedemos a insertar los tres elementos que necesitaremos en el layout de la aplicación, para insertar los elementos lo pueden hacer desde la forma gráfica o directamente mediante código XML. Lo que haré será asignar su correspondiente ID a cada elemento XML y escribir los textos que aparecerán en el botón y en el campo de text, para el campo de texto usare el atributo android:hint. 
La interfaz gráfica hasta el momento se ve así. Si no sabes cambiar el texto de los elementos View click aquí.
Elementos EditText, Button, TextView

Y el código XML está así.


    

    
    
    

Y mi archivo de strings así.



    ZASApp3
    Hello world!
    Settings
    Nombre
    Acceder


3 Asociar los elementos XML con sus objetos en JAVA.
Ahora vamos a la Actividad (Activity) de nuestra aplicación creamos los objetos correspondientes en JAVA  y los asociamos a los elementos XML mediante el método findViewById() esto es muy sencillo pero si necesitas ayuda click aquí. El código Java hasta el momento es el siguiente.
package com.example.zasapp3.zasapp3;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class ZASApp3MainActivity extends ActionBarActivity {

    EditText et1; //Declaracion de un objeto EditText llamado et1
    Button btn1;  //Declaracion de un objeto Button llamado btn1
    TextView tv1; //Declaracion de un objeto TextView llamado tv1

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zasapp3_main);
        /* Asociacion de los objetos en Java con sus correspondientes
            elementos XML mediante el metodo findViewById
        */
        et1 = (EditText)findViewById(R.id.editText1);
        btn1 = (Button)findViewById(R.id.btn1);
        tv1 = (TextView)findViewById(R.id.textView1);

    }
}
4 Obtener datos o leer datos de EditText.
Primero ponemos nuestro objeto btn1 en modo escucha con el método setOnClickListener() dentro de este método comenzamos a escribir lo que queremos que pase, si quires ver un tutorial de método onClick click aquí.
Lo primero es obtener el texto del campo de texto o EditText y guardar el texto en una variable String, esto lo haremos con el metodo getText() y para convertirlo a String usaremos el método toString().
Por último damos escribimos la linea para mostrar el texto en el TextView para ello se usara el método setText(String). Dentro del parentesis debe ir un dato tipo cadena para que muestre la palabra hola sería lo siguiente setText("Hola") ahora solo concatenamos el dato que obtuvimos i se guardo en la variable string dato y quedaría de la siguiente forma. tv1.settext("Hola "+dato);
El código Java es el siguiente.
btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String dato = et1.getText().toString();
                /* El metodo getText() obtiene el dato escrito con el metodo toString()
                    se convierte a String para poder manipularlo como tal, por ultimo
                    se muestra en el textView con el metodo .setText()
                  */
                tv1.setText("Hola " +dato);
            }
        });
Importante este código va dentro de onCreate. Al hacer esto podemos correr nuestra aplicación.
El código XML no tiene ninguna modificación y el código java final es el siguiente.
package com.example.zasapp3.zasapp3;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class ZASApp3MainActivity extends ActionBarActivity {

    EditText et1; //Declaracion de un objeto EditText llamado et1
    Button btn1;  //Declaracion de un objeto Button llamado btn1
    TextView tv1; //Declaracion de un objeto TextView llamado tv1

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zasapp3_main);
        /* Asociacion de los objetos en Java con sus correspondientes
            elementos XML mediante el metodo findViewById
        */
        et1 = (EditText)findViewById(R.id.editText1);
        btn1 = (Button)findViewById(R.id.btn1);
        tv1 = (TextView)findViewById(R.id.textView1);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String dato = et1.getText().toString();
                /* El metodo getText() obtiene el dato escrito con el metodo toString()
                    se convierte a String para poder manipularlo como tal, por ultimo
                    se muestra en el textView con el metodo .setText()
                  */
                tv1.setText("Hola " +dato);
            }
        });

    }
}
Esto es todo ahora correr y probar la aplicación podremos, el resultado será el siguiente.

En la primer imagen se muestra, la pantalla al iniciar la aplicación, luego se ingresa el dato (nombre)
y se pulsa el botón para obtener los valores escritos en el campo de texto (EditText) y muestra Hola más el valor. Y así es como se obtienen valores de los EditText o campos de texto, espero que les haya sido de utilidad este tutorial, no olvides compartir el post y seguirnos en las redes sociales, hasta la próxima.

3 comentarios:

  1. Buenas, Android Cero. Estoy haciendo una aplicación bastante desarrollada ya. Cuando he implementado el código me ha salido este error al Depurar la aplicación:


    29962-29962/com.example.alejandro.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.alejandro.myapplication, PID: 29962
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.alejandro.myapplication/com.example.alejandro.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
    at android.app.ActivityThread.access$800(ActivityThread.java:156)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:211)
    at android.app.ActivityThread.main(ActivityThread.java:5371)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:945)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740)
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
    at com.example.alejandro.myapplication.MainActivity.onCreate(MainActivity.java:83)
    at android.app.Activity.performCreate(Activity.java:5990)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442) 
    at android.app.ActivityThread.access$800(ActivityThread.java:156) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:211) 
    at android.app.ActivityThread.main(ActivityThread.java:5371) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:945) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740) 

    ResponderEliminar
  2. Excelente amigo. Me salio perfecto. Muy agradecido.

    Eduardo Linarez

    ResponderEliminar