How I can retrieve current fragment in NavHostFragment?

BenjaminBihr picture BenjaminBihr · Jun 4, 2018 · Viewed 33.1k times · Source

I tried to find a method in the new Navigation components but I didn't find anything about that.

I have the current destination with :

mainHostFragment.findNavController().currentDestination

But I can't get any reference to the displayed fragment.

Answer

ianhanniballake picture ianhanniballake · Jun 5, 2018

Navigation does not provide any mechanism for getting the implementation (i.e., the Fragment itself) of the current destination.

As per the Creating event callbacks to the activity, you should either communicate with your Fragment by

  • Having the Fragment register a callback in its onAttach method, casting your Activity to an instance of an interface you provide
  • Use a shared ViewModel that your Activity and Fragment use to communicate.