navigator
navigator copied to clipboard
[Question] - How to use fragment manager?
if (this::navigate.isInitialized) { childFragmentManager.addOnBackStackChangedListener { Timber.e("addOnBackStackChangedListener") val fragment = navigate.getCurrentFragment() ?: return@addOnBackStackChangedListener if (fragment is BaseFragment<*>) { fragment.onFragmentResume() } } }
Im using navigator(inside fragment) to manage my fragments but when I use above code to addOnBackStackChangedListener nothing happen. I also tried navigate.getFragmentManager() but does not work
Hi, from what I understand you want to have a callback every time your back stack changes. In that case, you don't need to check if navigator is initialized. Just place attach the listener during init
and that would be fine.
class MyFragment: ValueFragment {
init {
childFragmentManager. addOnBackStackChangedListener { ... }
}
}
This will allow you to listen to any changes carried out via childFragmentManager
via simpleNavigator
. If you want to listen to activity's back stack changes follow the same for activity class.
Also from your code check if addOnBackStackChangedListener
is getting called and then proceed with your logic.
Yep, the problem is addOnBackStackChangedListener not getting called
Try calling navigate.navigate to a different fragment and see if it gets called?
@KaustubhPatange i did but still same result
This is not a navigator issue but the way how fragments works. addOnBackStackChangedListener
is a special API that is only called when you choose addToBackstack
option or pass addToBackstack=true
in NavOptions when navigating.
If you are not doing it then the listener won't be called.
@KaustubhPatange thanks for your support. Let me check