Spanish subtitles

← 12-36 Conversión de tipos con findViewById - Solución

Conversión de tipos con findViewById - Solución

Get Embed Code
13 Languages

Showing Revision 15 created 10/02/2015 by andp.

  1. Veamos el número 1.
  2. Antes de revelar la respuesta,
    voy a copiar este código
  3. y pegarlo en Android Studio.
  4. Quiero mostrarle
    qué tipo de error resultaría.
  5. Para resolver este test,
    no era necesario usar Android Studio,
  6. se podría haber resuelto
    con solo mirar este código
  7. y luego escribir la respuesta.
  8. Por lo tanto, no importa
    si se utiliza o no Android Studio.
  9. Para hacer funcionar el código,
    creé un nuevo proyecto
  10. y luego modifiqué el principal archivo
    de diseño de la actividad
  11. para que tuviera muchas visualizaciones
    con las ID a las que haremos referencia.
  12. No estoy segura de qué aspecto
    tendría este diseño,
  13. pero quería poner aquí las visualizaciones
    con sus nombres de visualizar ID.
  14. De ese modo, mi código funcionará aquí.
  15. Para el número 1, pegué el código aquí,
    y veo que hay un error.
  16. Android Studios dice
    que no puede resolver el método setText.
  17. Si recuerdan el último vídeo,
  18. mencioné que setText
    es un método TextView.
  19. Eso significa que este método
    solo se puede aplicar a objetos TextView.
  20. En este caso,
    lo aplicamos a nameTextView.
  21. Un nameTextView está clasificado
    como un objeto de visualización.
  22. Tenemos que cambiar esto
    para que sea un objeto TextView.
  23. Entonces nos da un error
    que dice que hay tipos incompatibles.
  24. Un TextView, se necesita un objeto
    de tipo TextView,
  25. pero en cambio, encontró un objeto
    de tipo visualización.
  26. Eso es porque buscar visualización por ID
    nos devuelve una visualización,
  27. y esta parte de la izquierda
    requiere TextView.
  28. Eso significa que tenemos que añadir esto
  29. para convertir la visualización
    de findViewById en un TextView.
  30. Entonces podemos guardar todo esto,
  31. que es el nameTextView,
    en la variable del lado izquierdo.
  32. Entonces desaparece el error y ponemos
    el texto, "Laura" en este TextView.
  33. El error está en la línea 1,
    así que escribí el código correcto aquí.
  34. La explicación general es que debemos
    convertir esta visualización en TextView
  35. y luego guardarlo
    en una variable nameTextView.
  36. De ese modo, podemos llamarlo
    nameTextView.setText,
  37. que es un método TextView,
    en la siguiente línea de código.
  38. Pasemos al número 2.
  39. Voy a copiar este código
    y ponerlo en Android Studio.
  40. Este es el código que pegué.
  41. La primera línea de código
    parece correcta, no hay ningún error.
  42. Pero la segunda línea
    tiene un subrayado rojo
  43. y dice que hay un error
    de tipos incompatibles.
  44. Dice, se requiere una secuencia
    pero en cambio encontró un entero.
  45. Para entenderlo mejor,
  46. debemos buscar el método getMaxLines
    en la documentación TextView.
  47. En la documentación TextView,
  48. buscaré el método getMaxLines.
  49. Y aquí está.
  50. No hay parámetros de entrada
  51. y el valor de retorno
    de este método es un entero.
  52. Así que por eso Android Studio se quejaba,
  53. porque este método nos da un entero,
  54. pero estábamos intentando guardarlo
    en una variable de secuencias.
  55. Por tanto, debo cambiar el tipo de datos
    de la variable para que sea un entero
  56. y el error desaparece.
  57. Por lo tanto, el valor de retorno
    de este método es un entero.
  58. Podemos guardarlo
    en esta variable maxLines.
  59. Todavía queda una advertencia.
  60. Dice que la variable maxLines
    nunca se utiliza.
  61. Pero es solo un fragmento de código.
  62. Supongo que si esto fuera
    una aplicación normal
  63. querríamos utilizar esta variable
    más adelante.
  64. El error está en la línea dos
    y este es el código actualizado.
  65. La explicación general es
    que el valor de retorno de este método
  66. debería ser un entero.
  67. Pasemos al número 3.
  68. Aquí hay un código para el número 3.
  69. He copiado y pegado el código
    para el número 3 en Android Studio.
  70. Hay un mensaje de error que dice
    "tipos incompatibles".
  71. Se necesita una ImageView,
    pero en cambio encontró una visualización.
  72. Esto es parecido al error
    que acabamos de ver con el TextView.
  73. Este método nos da una visualización.
  74. Y, a la izquierda, estamos intentando
    guardarlo en un ImageView.
  75. Tenemos que convertir este objeto
    de visualización en un ImageView.
  76. Es válido porque la visualización
    con icono ID en realidad es un ImageView,
  77. por lo que se puede convertir
    en visualización de imagen.
  78. Ahora que el lado derecho
    equivale a un ImageView,
  79. podemos guardarlo en la variable
    del lado izquierdo.
  80. El tipo de datos de esta variable
    es ImageView,
  81. por lo que ahora todo coincide,
    y desaparece el error.
  82. En la siguiente línea,
    podemos aplicar un método ImageView,
  83. SetImageResource,
    a este objeto IconImageView.
  84. Aún queda un error que dice que
    no puede resolver el "logo" del símbolo.
  85. Eso es porque no agregué una imagen
    a la aplicación con el logo del nombre.
  86. Si la agrego, el error desaparece,
    así que nuestro código es correcto.
  87. Este es el código correcto para convertir
    esta visualización en un ImageView.
  88. Por último, tenemos el número 4.
  89. Pegué el código aquí en Android Studio
    y, sorprendentemente, no hay errores.
  90. El código está buscanco
    una visualización con el ID "title"
  91. y eso debería darnos una visualización,
    que se guarda en esta variable TextView.
  92. TextView tiene un tipo de datos
    de visualización,
  93. así que coincide con el lado derecho,
    y toda esta línea de código es correcta.
  94. En la siguiente línea tomamos este objeto,
    que es una visualización
  95. y aplicamos un método setVisibility.
  96. El método toma un parámetro de entrada
    que es View.GONE.
  97. Puedo comprobar la documentación
    para verificar por qué es así.
  98. En la documentación
    de la clase Visualizacion,
  99. puedo buscar el método setVisibility.
  100. Podemos ver que setVisibility
    es un método en la clase Visualización.
  101. Toma esta entrada, un entero,
    que representa el estado de visibilidad.
  102. Los posibles valores de visibilidad
    son VISIBLE, INVISIBLE y GONE.
  103. Dado que setVisibility
    es un método de la clase Visualización,
  104. es válido aplicarlo en este caso.
  105. No es necesario convertir
    esto en TextView,
  106. porque el método que estamos aplicando
    es un método de clase Visualización.
  107. Si estuviéramos intentando
    utilizar un método TextView,
  108. tendríamos que convertirlo en TextView.
  109. Entonces, para esta pregunta,
    deben poner "ningún error",
  110. porque setVisibility
    es un método Visualización,
  111. y se puede dejar
    como objeto de Visualización.
  112. Eran preguntas difíciles.
  113. No pasa nada
    si no respondió correctamente.
  114. En el siguiente test,
    podrá seguir practicando.