Читать книгу El gran libro de Android - Jesus Tomás Gironés - Страница 79
2.9.1. Acceder y modificar las propiedades de las vistas por código
ОглавлениеEjercicio: Acceder y modificar las propiedades de las vistas por código |
1.Abre el layout activity_ main.xml creado en el ejercicio anterior.
2.En la paleta de vistas, dentro de Text Fields, busca Number (Decimal) y arrástralo encima del botón rojo.
3.Modifica algunos atributos de esta vista: Hint = “Introduce un número”, id = “@+id/entrada”.
4.En la paleta de vistas, dentro de Form Widgets, busca Button y arrástralo encima del botón rojo.
5.Modifica algunos atributos de esta vista: Haz que su anchura ocupe toda la pantalla, que su texto sea “0” y que su id sea “button0”.
6.En la paleta de vistas, dentro de Form Widgets, busca Large Text y arrástralo debajo del botón rojo.
7.Modifica algunos atributos de esta vista: TextColor = #0000FF, Text = “”, Hint = “Resultado”, id = “@+id/salida”.
8.Abre el fichero MasVistaActivity.java. Vamos a añadir dos nuevas propiedades a la clase. Para ello copia el siguiente código al principio de la clase (antes del método onCreate()):
NOTA: recuerda pulsar Ctrl-Shift-O para que se añadan los paquetes de las dos nuevas clases utilizadas.
9.Copia al final del método onCreate() las siguientes dos líneas:
Como se explicó al principio del capítulo, las diferentes vistas definidas en activity_main.xml son creadas como objetos Java cuando se ejecuta setContentView(R.layout.activity_main). Si queremos manipular algunos de estos objetos hemos de declarar las variables (paso 8) y asignarles la referencia al objeto correspondiente (paso 9). Para ello, hay que introducir el atributo id en XML y utilizar el método findViewById(R.id.valor_en_atributo_id). Este método devuelve un objeto de la clase View. No obstante, los objetos declarados (entrada y salida) no son exactamente de esta clase, sino una subclase de View, y Java no permite una asignación directa. En estos casos hemos de utilizar una conversión de tipo (type cast) para poder hacer la asignación. Para más información al respecto, léase el apartado Polimorfismo13 del tutorial de Java Esencial.
10. Introduce en el atributo onClick del botón con id boton0 el valor “sePulsa0”. De esta manera, cuando se pulse sobre el botón se ejecutará el método sePulsa0(). Según la jerga de Java, diremos que este método es un escuchador del evento click que puede generar el objeto boton0.
11. Añade el siguiente método al final de la clase MasVistasActivity.
Lo que hace es asignar como textos de entrada el resultado de concatenar al texto de entrada el carácter “0”.
12. Añade al botón con texto “0” el atributo tag = “0”.
13. Modifica el método sePulsa0() de la siguiente forma:
El resultado obtenido es equivalente al anterior. En algunos casos será interesante utilizar un mismo método como escuchador de eventos de varias vistas. Podrás averiguar la vista que causó el evento, dado que esta se pasa como parámetro del método. En el ejemplo sabemos que en el atributo tag guardamos el carácter a insertar. El atributo tag puede ser usado libremente por el programador para almacenar un objeto de la clase Object13 (en la práctica podemos usar cualquier tipo de clase, dado que Object es la clase raíz de la que heredan todas las clases en Java). En nuestro caso hemos almacenado un objeto String, por lo que necesitamos una conversión de tipo13. NOTA: Utiliza esta forma de trabajar en la práctica para no tener que crear un método onClick para cada botón de la calculadora.
14. Modifica el código de sePulsa() con el siguiente código:
15. En este código el valor de entrada es convertido en Float, multiplicado por dos y convertido en String para ser asignado a salida.
16. Ejecuta el proyecto y verifica el resultado.