findViewById en Fragment de Android usando Java o Kotlin

findViewById en Fragment de Android

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.

findViewById en Fragment de Android usando Java o Kotlin
Ejemplo de invocación a findViewById en Kotlin

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:

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    return inflater.inflate(R.layout.fragment_gastos, container, false);
}

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:

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View view = inflater.inflate(R.layout.fragment_gastos, container, false);
    FloatingActionButton floatingActionButton = view.findViewById(R.id.fabAgregarGasto);
    return view;
}

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:

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {
    // Inflate the layout for this fragment
    val view: View = inflater.inflate(R.layout.fragment_deudas, container, false)
    fabAgregarDeuda = view.findViewById(R.id.fabAgregarDeuda)
    fabAgregarDeuda.setOnClickListener {
        // Aquí código del click :)
    }
    return view
}

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:

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    FloatingActionButton floatingActionButton = view.findViewById(R.id.fabAgregarGasto);
    floatingActionButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Aquí el código cuando se hace click
        }
    });
}

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:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    adView = view.findViewById(R.id.adView)
}

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.

Te invito a leer más sobre Java y Kotlin en mi blog 🙂

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “findViewById en Fragment de Android”

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *