0

FragmentStatePagerAdapter(for short FSPA) has pre-load mechanism.

We assume that A,B and C Fragment in FSPA

When user select the A Fragment, the B fragment will be pre-load, something in B fragment don't want to be executed because B is not the current fragment.

How cloud i determine if a fragment is a current fragment user selected ?

The code snippet can't explain what i want to do, so i have deleted it

Update my question as below :

Assume that

  1. there are three fragments A , B, C in viewPager
  2. fragment A is the first visible to user.
  3. start e-ticket transaction if fragment A is visible to user
  4. In other page (except fragment A), we need to stop e-ticket transaction

Problem: Pre-load fragment A in viewpager will cause that user don't see a e-ticket present but e-ticket start transaction

Want to do: View of fragment A is a e-ticket, so transaction can be started in fragment A only and stop in other fragment.

p.s. start and stop e-ticket transaction are in A fragment class.

  • Similar question [here](http://stackoverflow.com/questions/18609261/getting-the-current-fragment-instance-in-the-viewpager). Hope it helps. – gvlachakis Aug 31 '16 at 08:51

2 Answers2

0

You can add an onPageChangeListener to your viewpager and inside onPageSelected(int position) you can get the current fragment as.

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
             Fragment currentFragment=new MyViewPagerAdapter().getItem(position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

Ps- By 'user select' do you mean Clicked or Visible on screen?

Darshan Miskin
  • 844
  • 14
  • 25
0

You can use setUserVisibleHint method.

 @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
if(isVisibleToUser){
... your code
}
    }
Cüneyt
  • 2,565
  • 25
  • 31
  • The method to be called before onCreateView, but i need to do something after view is ready, if a task is independent of views, it could be a good idea. – samuel yang Sep 01 '16 at 03:32