How to know when fragment actually visible in viewpager

后端 未结 4 1548
走了就别回头了
走了就别回头了 2021-01-12 16:41

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 fragment

相关标签:
4条回答
  • 2021-01-12 16:44

    Did you try the isVisible method in the fragment?

    0 讨论(0)
  • 2021-01-12 16:52

    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

    0 讨论(0)
  • 2021-01-12 16:54

    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.

    0 讨论(0)
  • 2021-01-12 17:04

    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 ");
            }
        }
    
    0 讨论(0)
提交回复
热议问题