Cuando usamos actividades o activities en Android, es fácil obtener un elemento de la vista usando findViewById.
La cosa cambia cuando queremos invocar a findViewById
en un Fragment de Android, ya sea usando Java o Kotlin. Es por eso que en este post te mostraré cómo y cuándo invocar a findViewById
en un fragment.

Veremos los ejemplos en Java y Kotlin.
findViewById en Fragment
En resumen, lo único que tenemos que hacer es invocar a findViewById
desde la vista padre. Esta vista puede ser obtenida dentro del método onCreateView
o en el método onViewCreated
.
Método 1: en el onCreateView
Seguramente tu fragmento estará sobrescribiendo este método en donde simplemente infla al Layout. Algo así al menos en Java:
Fíjate en la firma del método, estamos regresando la Vista o View
así que aquí podemos recuperarla en una variable, definir los elementos y luego regresarla:
Obtenemos la vista en la línea 6, luego invocamos a findViewById
desde esa variable y finalmente la devolvemos. Así es como podemos declarar todas nuestras vistas y claramente agregar listeners o cualquier cosa.
Aquí tenemos el ejemplo con Kotlin:
Obtenemos la vista en la línea 4, después invocamos a findViewById
, agregamos un listener y al final regresamos la vista.
Método 2: onViewCreated
Este método es invocado cuando la vista ya se ha creado. Recibe una variable de tipo View
que tiene el método findViewById
. Veamos el ejemplo con Java:
Como ves, al método onViewCreated
se le pasa la vista en la variable view
. Ignora las anotaciones de NonNull
y Nullable
, fíjate en que la llamada a findViewById
está en la línea 3, y se invoca a partir de la variable que recibimos dentro de la función.
Después de recuperar la variable podemos agregarle listeners o simplemente trabajar con la vista recién obtenida.
El equivalente en Kotlin es:
Recibimos una variable de tipo View
dentro de la función, y luego invocamos a findViewById
en la línea 2.
Si me preguntas, yo prefiero el método onCreateView
.
GRACIAS, lo has explicado de una forma muy simple y clara, me ayudó.