It may be very old, but I found that setUserVisibleHint () does not work for many of my use cases. Instead, I had to resort to a hacker using ViewTreeObserver.
Basically, after your fragment is initialized, you will get a view inside it and follow these steps:
myViewInFragment.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { myMethodWhenFragmentFirstBecomesVisible(); myViewInFragment.getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); }
source share