-
Title:
12-36 Conversión de tipos con findViewById - Solución
-
Description:
Conversión de tipos con findViewById - Solución
-
Veamos el número 1.
-
Antes de revelar la respuesta,
voy a copiar este código
-
y pegarlo en Android Studio.
-
Quiero mostrarle
qué tipo de error resultaría.
-
Para resolver este test,
no era necesario usar Android Studio,
-
se podría haber resuelto
con solo mirar este código
-
y luego escribir la respuesta.
-
Por lo tanto, no importa
si se utiliza o no Android Studio.
-
Para hacer funcionar el código,
creé un nuevo proyecto
-
y luego modifiqué el principal archivo
de diseño de la actividad
-
para que tuviera muchas visualizaciones
con las ID a las que haremos referencia.
-
No estoy segura de qué aspecto
tendría este diseño,
-
pero quería poner aquí las visualizaciones
con sus nombres de visualizar ID.
-
De ese modo, mi código funcionará aquí.
-
Para el número 1, pegué el código aquí,
y veo que hay un error.
-
Android Studios dice
que no puede resolver el método setText.
-
Si recuerdan el último vídeo,
-
mencioné que setText
es un método TextView.
-
Eso significa que este método
solo se puede aplicar a objetos TextView.
-
En este caso,
lo aplicamos a nameTextView.
-
Un nameTextView está clasificado
como un objeto de visualización.
-
Tenemos que cambiar esto
para que sea un objeto TextView.
-
Entonces nos da un error
que dice que hay tipos incompatibles.
-
Un TextView, se necesita un objeto
de tipo TextView,
-
pero en cambio, encontró un objeto
de tipo visualización.
-
Eso es porque buscar visualización por ID
nos devuelve una visualización,
-
y esta parte de la izquierda
requiere TextView.
-
Eso significa que tenemos que añadir esto
-
para convertir la visualización
de findViewById en un TextView.
-
Entonces podemos guardar todo esto,
-
que es el nameTextView,
en la variable del lado izquierdo.
-
Entonces desaparece el error y ponemos
el texto, "Laura" en este TextView.
-
El error está en la línea 1,
así que escribí el código correcto aquí.
-
La explicación general es que debemos
convertir esta visualización en TextView
-
y luego guardarlo
en una variable nameTextView.
-
De ese modo, podemos llamarlo
nameTextView.setText,
-
que es un método TextView,
en la siguiente línea de código.
-
Pasemos al número 2.
-
Voy a copiar este código
y ponerlo en Android Studio.
-
Este es el código que pegué.
-
La primera línea de código
parece correcta, no hay ningún error.
-
Pero la segunda línea
tiene un subrayado rojo
-
y dice que hay un error
de tipos incompatibles.
-
Dice, se requiere una secuencia
pero en cambio encontró un entero.
-
Para entenderlo mejor,
-
debemos buscar el método getMaxLines
en la documentación TextView.
-
En la documentación TextView,
-
buscaré el método getMaxLines.
-
Y aquí está.
-
No hay parámetros de entrada
-
y el valor de retorno
de este método es un entero.
-
Así que por eso Android Studio se quejaba,
-
porque este método nos da un entero,
-
pero estábamos intentando guardarlo
en una variable de secuencias.
-
Por tanto, debo cambiar el tipo de datos
de la variable para que sea un entero
-
y el error desaparece.
-
Por lo tanto, el valor de retorno
de este método es un entero.
-
Podemos guardarlo
en esta variable maxLines.
-
Todavía queda una advertencia.
-
Dice que la variable maxLines
nunca se utiliza.
-
Pero es solo un fragmento de código.
-
Supongo que si esto fuera
una aplicación normal
-
querríamos utilizar esta variable
más adelante.
-
El error está en la línea dos
y este es el código actualizado.
-
La explicación general es
que el valor de retorno de este método
-
debería ser un entero.
-
Pasemos al número 3.
-
Aquí hay un código para el número 3.
-
He copiado y pegado el código
para el número 3 en Android Studio.
-
Hay un mensaje de error que dice
"tipos incompatibles".
-
Se necesita una ImageView,
pero en cambio encontró una visualización.
-
Esto es parecido al error
que acabamos de ver con el TextView.
-
Este método nos da una visualización.
-
Y, a la izquierda, estamos intentando
guardarlo en un ImageView.
-
Tenemos que convertir este objeto
de visualización en un ImageView.
-
Es válido porque la visualización
con icono ID en realidad es un ImageView,
-
por lo que se puede convertir
en visualización de imagen.
-
Ahora que el lado derecho
equivale a un ImageView,
-
podemos guardarlo en la variable
del lado izquierdo.
-
El tipo de datos de esta variable
es ImageView,
-
por lo que ahora todo coincide,
y desaparece el error.
-
En la siguiente línea,
podemos aplicar un método ImageView,
-
SetImageResource,
a este objeto IconImageView.
-
Aún queda un error que dice que
no puede resolver el "logo" del símbolo.
-
Eso es porque no agregué una imagen
a la aplicación con el logo del nombre.
-
Si la agrego, el error desaparece,
así que nuestro código es correcto.
-
Este es el código correcto para convertir
esta visualización en un ImageView.
-
Por último, tenemos el número 4.
-
Pegué el código aquí en Android Studio
y, sorprendentemente, no hay errores.
-
El código está buscanco
una visualización con el ID "title"
-
y eso debería darnos una visualización,
que se guarda en esta variable TextView.
-
TextView tiene un tipo de datos
de visualización,
-
así que coincide con el lado derecho,
y toda esta línea de código es correcta.
-
En la siguiente línea tomamos este objeto,
que es una visualización
-
y aplicamos un método setVisibility.
-
El método toma un parámetro de entrada
que es View.GONE.
-
Puedo comprobar la documentación
para verificar por qué es así.
-
En la documentación
de la clase Visualizacion,
-
puedo buscar el método setVisibility.
-
Podemos ver que setVisibility
es un método en la clase Visualización.
-
Toma esta entrada, un entero,
que representa el estado de visibilidad.
-
Los posibles valores de visibilidad
son VISIBLE, INVISIBLE y GONE.
-
Dado que setVisibility
es un método de la clase Visualización,
-
es válido aplicarlo en este caso.
-
No es necesario convertir
esto en TextView,
-
porque el método que estamos aplicando
es un método de clase Visualización.
-
Si estuviéramos intentando
utilizar un método TextView,
-
tendríamos que convertirlo en TextView.
-
Entonces, para esta pregunta,
deben poner "ningún error",
-
porque setVisibility
es un método Visualización,
-
y se puede dejar
como objeto de Visualización.
-
Eran preguntas difíciles.
-
No pasa nada
si no respondió correctamente.
-
En el siguiente test,
podrá seguir practicando.