Issue
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getUserVisibleHint()) {
isVisible = true;
onVisible();
} else {
isVisible = false;
onInVisible();
}
}
I found that this part of the code is not executed.
Solution
They just changed API in Fragments.
If you use this method to limit fragments lifecycle:
You can now set a max Lifecycle state for a Fragment by calling setMaxLifecycle() on a FragmentTransaction. This replaces the now deprecated setUserVisibleHint().
Source: https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0-alpha07 .
If you need this method because you try to detect which fragment is currently visible in ViewPager
. You can now just use onResume
and onPause
methods instead but before that you should change default behaviour in FragmentPagerAdapter
constructor.
Like this:
FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
Edit:
Because FragmentPagerAdapter
is deprecated as well it is better to use ViewPager2 now.
In case of ViewPager2
it is default behaviour and we can use onResume
and onPause
methods to know which fragment is currently visible.
Answered By - lukjar
Answer Checked By - Senaida (JavaFixing Volunteer)