Cómo llamar métodos de un fragment, desde un menú en la Activity

Llamar un método en una aplicación Android, hecha en Java, es algo relativamente sencillo, incluso cuando se hace desde una clase a otra o, cuando queremos llamarlo desde un fragment o un Activity, pero hay casos especiales, en los que las cosas no suelen ser tan simples, por lo que aquí explicaré cómo hacerlo en una situación particular.

Este artículo está centrado en explicar cómo llamar un método desde un menú superior, creado en un activity o, desde cualquier lugar de la app, aun cuando el fragment que contiene el método en cuestión está activado. Esto, aunque puede sonar no muy claro en un principio, si puede haber casos en los que se necesite, que un método, contenido en un fragment, sea accesible para cualquier ventana de la aplicación.

Cómo llamar métodos de un fragment, desde un menú en la Activity

Cómo llamar el método de un fragment desde el menú de la app

Normalmente el menú se crea en la MainActivity y tiene su método para crear una acción para cada uno de los ítems que lo componen, una de esas acciones es la que va a llamar nuestro método del fragment, para lo que hará falta hacer uso de las transiciones en el FragmentContainerView. Dicho código queda de la siguiente manera, usando como ejemplo el HomeFragment:


// Se instancia el HomeFragment
  HomeFragment homeFragment = new HomeFragment();
	 // LLamar al FragmentManager e iniciar la transacción
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.myFragmentContainerView, homeFragment)
		// En lugar de commit(), se usa commitNow()
                    .commitNow();
            //Llama al método después de cargar el fragmento
            homeFragment.MetodoALlamar()

Llamar el método del Fragment con botones, desde cualquier lugar de la App

Si lo que se quiere es crear un método que se pueda llamar a través de botones, desde cualquier ubicación de la app, lo que se debe hacer el meter el código anterior dentro de un método en la actividad principal y luego instanciar la actividad donde se quiera usar. Algo como lo siguiente:

 
     private void abrirMetodo (){
         MainActivity mainActivity = (MainActivity)getActivity();
         assert mainActivity != null;
         mainActivity.metodoDeOtroFragment();
     }

Ya este método se puede crear en cualquier fragment y llamarlo con el clic de un botón o, como queramos, según sea la necesidad que se tenga en la aplicación para Android. Lo importante aquí, es que es posible crear un método de uso para toda la App, que tenga su función principal dentro de un fragment.

A mí, en lo personal, esta necesidad me nació, porque necesitaba recuperar una lista en el HomeFragment, la cual era manejada por una clase. Dentro de mi fragmento tenía todo para recuperar esa lista, pero, no quería poner un botón más en mi HomeFragment y, quería que dicha función fuera llamada desde el menú superior de mi app.

Siguiente Anterior