Portuguese, Brazilian subtitles

← 12-36 Casting with findViewById - Solution

Get Embed Code
13 Languages

Showing Revision 1 created 10/08/2015 by sp16.

  1. Vamos olhar o número 1.
  2. Antes de eu falar a resposta,
    vou copiar esse código e
  3. colar no Android Studio.
  4. Quero mostrar o tipo de erro
    que podemos ter como resposta.
  5. Agora, quando você estava fazendo o teste
    você não precisava usar o Android Studio,
  6. você poderia ter resolvido só
    olhando o código aqui e
  7. então escrito na resposta.
  8. Então, usando ou não o
    Android Studio, tudo bem.
  9. Para fazer o código funcionar,
    eu criei um novo projeto e
  10. então modifiquei o arquivo de
    layout ActivityMain,
  11. para que tivesse várias visualizações
    com esses ID's que vamos referenciar.
  12. Não tenho certeza como
    esse layout pareceria, mas
  13. eu só quero colocar as visualizações aqui
    com os nomes ID correspondentes.
  14. Desse jeito, meu código
    vai funcionar aqui.
  15. Então, número um, eu colei o código aqui,
    e eu percebi um erro.
  16. Adroid Studios diz que não pode
    determinar o método setText.
  17. Se você lembrar o último vídeo,
  18. Eu mencionei que setText
    é um método TextView.
  19. Isso significa que você só pode invocar
    esse método em objetos TextView.
  20. Nesse caso, vamos chamar
    chamar de nameTextView.
  21. Um nameTextView
    deve ser um objeto view,
  22. e precisamos mudar para
    um objeto TextView.
  23. Então recebemos um erro dizendo
    que não há compatibilidade.
  24. Um textview, um objeto tipo
    TextView é requerido, mas
  25. ao invés disso ele acha
    um objeto typeview.
  26. Isso porque findviewbyID
    retorna uma visualização, e
  27. esse lado esquerdo requer um TextView.
  28. Isso significa que precisamos
    modificar isso
  29. para receber a visualização por
    findViewById
  30. Então podemos armazenar tudo isso
  31. com o nome nameTextView
    na variável do lado esquerdo.
  32. Então o erro some, e podemos
    colocar o texto "Laura" nesse TextView.
  33. O erro está na linha 1,
    então eu escrevi o código certo aqui.
  34. A explicação geral é que precisamos
    lançar essa view em um TextView
  35. e então armazenar dentro
    da variável nameTextView.
  36. Desse jeito, nós podemos invocar
    nameTextView.setText
  37. que é um método TextView,
    na próxima linha de código.
  38. Vamos para o número dois.
  39. Vou copiar o código e colar
    no Android Studio.
  40. Esse é o código que eu copiei.
  41. A primeira linha
    parece correta, sem erros.
  42. Mas a segunda linha
    está sublinhada de vermelho e
  43. e isso quer dizer que existe
    um erro de digitação.
  44. Quer dizer que um string
    é necessário mas o código é int.
  45. Para entender melhor,
  46. temos que olhar o método getMaxLines
    nas instruções do TextView.
  47. Nas instruções, vou procurar por
  48. método getMaxLines.
  49. E aqui está.
  50. Não existem parâmetros de entrada,
  51. e o valor de retorno
    desse método é inteiro.
  52. Então era por isso que o Android Studio
    estava reclamando, por que esse método,
  53. se está dando como resposta um inteiro
  54. mas estamos tentando armazenar
    como uma variável string.
  55. Como resultado, eu preciso mudar esse tipo
    de dado da variável para uma inteira.
  56. Então o erro some.
  57. Então, o valor de retorno
    desse método é inteiro.
  58. Logo, podemos armazenar
    nessas variáveis maxLines.
  59. Ainda tem um aviso.
  60. Dizendo que a variável
    maxLines nunca foi usada.
  61. Mas isso é só um código snippet.
  62. Eu presumi que se isso
    fosse um aplicativo comum,
  63. iríamos usar
    essa variável depois.
  64. Então o erro está na segunda linha
    e esse é o código atualizado.
  65. A explicação é que o valor de retorno
    desse método deveria
  66. ser inteiro.
  67. Vamos para o exercício três.
  68. Esse é o código do exercício três.
  69. Eu copiei e colei o código
    no Android Studio.
  70. Aparece um erro com uma mensagem
    dizendo que os tipos são incompatíveis.
  71. Requer um ImageView,
    mas é um view.
  72. Esse erro é similar ao que acabamos
    de ver com o TextView.
  73. Esse método tem como
    resposta uma view.
  74. E do lado esquerdo, nós estamos tentando
    armazenar dentro de um ImageView.
  75. Então precisamos mudar esse objeto view
    para um ImageView
  76. Isso é valido por que o view no
    ícone ID na verdade é um ImageView,
  77. então tudo bem lançar isso
    num imageview
  78. Agora do lado direito,
    equivale a um ImageView,
  79. podemos armazenar dentro
    da variável do lado esquerdo.
  80. Essa variável tem um dado tipo ImageView
    então agora tudo combina
  81. e o erro some.
  82. No próximo lado,
    podemos invocar um método ImageView,
  83. SetImageResource,
    nesse objeto IconImageView object.
  84. Ainda tem um erro, dizendo
    que não aceita símbolos.
  85. Isso é porque eu não adicionei uma imagem
    no nosso aplicativo com a logo do nome.
  86. Se eu adicionar, o erro some,
    então nosso código está correto.
  87. Esse é o código correto, onde eu armazenei
    esse view em um ImageView.
  88. Por último temos o número 4.
  89. Eu colei o código no Android Studio
    e surpreendentemente não tem erros.
  90. O código está tentando achar
    uma view com o id title,
  91. e isso deve retornar um view como resposta
    e fica armazenado na variável TextView.
  92. TextView tem um tipo de dado View,
  93. então isso combina com o lado direito,
    então essa linha de código está correta.
  94. Na próxima linha, vamos pegar
    esse objeto, que é um ViewAnd,
  95. e vamos invocar um método
    setVIsibility
  96. O método usa um parâmetro de entrada
    chamado View.GONE.
  97. Eu posso checar as instruções
    para verificar o que significa isso.
  98. Nas instruções da classe view,
    eu posso procurar pelo
  99. método setVisibility.
  100. Eu vejo que setVisibility
    é um método dentro da classe view.
  101. É preciso de uma entrada inteira que
    represente o estado de visibilidade.
  102. Os valores possíveis da visibilidade são:
    VISIBLE, INVISIBLE, e GONE
  103. Como setVisibility é um método
    dentro da classe view,
  104. é uma entrada válida.
  105. Não tem necessidade de lançar
    em um TextView,
  106. por que o método que estamos invocando
    é um método da classe view.
  107. Agora, se estamos tentando
    usar o método TextView,
  108. então vamos precisar
    lançar em um TextView.
  109. Então para esse exercício,
    a resposta deve ser: sem erros,
  110. porque setVisibility é um método view
    e não tem problema deixa como objeto view.
  111. Essas questões foram difíceis.
  112. Tudo bem se você não acertou.
  113. No próximo teste, você vai
    poder praticar mais.