Android Studio e a ferramenta de compilação (build-tools) 26.0.0

Posted by rlecheta on julho 18, 2017
Android, Tutorial

Olá pessoal, segue um comunicado importante sobre o método findViewById(id).

A partir da  ferramenta de compilação (build-tools) 26.0.0 e da biblioteca appcompat-v7 versão “26.0.0 Beta 1”, o método findViewById(id) mudou de assinatura:

Antigamente o método findViewById(id) retornava uma View e era preciso fazer o cast, como neste exemplo:

Java:

ImageView img = (ImageView) findViewById(R.id.img);

Kotlin:

val img = findViewById (R.id.img) as ImageView

Ao utilizar a nova versão da lib appcompat-v7 (26.0.0) o método findViewById(id) retorna um tipo genérico (subclasse de View). Por isso mudou a forma de fazer a chamada:

Java (sem cast):

ImageView img = findViewById(R.id.img);

Kotlin (sem cast):

val img = findViewById<ImageView>(R.id.img)

Se você conhece o que são tipos genéricos é simples entender. Veja que foi adicionado o tipo T na assinatura do método findViewById(id). Para você conferir, segue assinatura do método:

public <T extends View> T findViewById(@IdRes int id) {

return getDelegate().findViewById(id);

}

O novo livro Android Essencial com Kotlin que em breve será lançado pela editora Novatec já contém estas atualizações.

Documentação Oficial (release notes):

https://developer.android.com/topic/libraries/support-library/revisions.html

2 Comments to Android Studio e a ferramenta de compilação (build-tools) 26.0.0

  • Oi Ricardo! Comecei como desenvolvedor. Antes fazia estudos e alguns programas simples para fins acadêmicos. Vou comprar seu livro atualizado.

    Mas queria uma dica, se possível.

    Faço uma conexão com banco de dados externo com mysql. Para que possa usar os selects que coloquei na classe, que possuem dependências da resposta de outras activities, eu devo sempre “criar” uma instância daconexão nas activities que preciso dos dados, ou tem como eu obter por parâmetro, algo assim? Agradeço demais sua contribuição.

    • Oi Victor, não entendi direito a pergunta. Se você está se conectando diretamente do app no seu banco de dados que está no servidor, isso não é recomendado. O ideal é criar um web service no servidor para fazer a consulta que vc precisa, e este web service retornar os dados para o aplicativo.