I am using 4 fragments inside a ViewPager ,as ViewPager load the previous and next fragment in advance ,and no lifecycle method is called when navigating between fragments. So is there any way to detect when Fragment is actually visible. Thanks in Advance.
Of course. Assuming that viewPager
is your instance of the ViewPager
, use: viewPager.getCurrentItem()
.
Within your Fragment
you can check if its instance is visible to the user like so:
@Override
public void setUserVisibleHint(boolean visible) {
super.setUserVisibleHint(visible);
if (visible) {
Log.i("Tag", "Reload fragment");
}
}
Always make sure that you search for answers throughly before asking your question. For instance, the first place you should check would be: https://developer.android.com/reference/android/support/v4/view/ViewPager.html
viewPager
from within setUserVisibleHint
of each one of your Fragment
instances. If you want to update the same view, then this method itself is your answer. Just replace Log.i()
with the code that you want to run each time the fragment becomes visible. –
Grigson as per @Matt's answer setUserVisibleHint
is deprecated
so here is alternative way for this.
@Override
public void setMenuVisibility(boolean isvisible) {
super.setMenuVisibility(isvisible);
if (isvisible){
Log.d("Viewpager", "fragment is visible ");
}else {
Log.d("Viewpager", "fragment is not visible ");
}
}
Of course. Assuming that viewPager
is your instance of the ViewPager
, use: viewPager.getCurrentItem()
.
Within your Fragment
you can check if its instance is visible to the user like so:
@Override
public void setUserVisibleHint(boolean visible) {
super.setUserVisibleHint(visible);
if (visible) {
Log.i("Tag", "Reload fragment");
}
}
Always make sure that you search for answers throughly before asking your question. For instance, the first place you should check would be: https://developer.android.com/reference/android/support/v4/view/ViewPager.html
viewPager
from within setUserVisibleHint
of each one of your Fragment
instances. If you want to update the same view, then this method itself is your answer. Just replace Log.i()
with the code that you want to run each time the fragment becomes visible. –
Grigson You can use viewPager.getCurrrentItem() to get the currently selected index, and from that you should be able to extrapolate which fragment is shown. However what you probably want is to use addOnPageChangeListener() to add an OnPageChangeListener. This will let you keep track of what page is selected, as it's selected by implementing the onPageSelected(int selected) method.
Did you try the isVisible method in the fragment?
isVisible
is helping to avoid additional calls when it is not a current fragment. –
Dorey Nowadays you can override androidx.fragment.app.onResume
and androidx.fragment.app.onPause
to detect if it is visible or not respectively.
© 2022 - 2024 — McMap. All rights reserved.