noob-Sci-Bot
noob-Sci-Bot

Reputation: 231

How to get currently displayed fragment in viewpager

I'm new with viewPagers. Here is my problem. I've got a viewPager containing 3 fragments, inside an activity. I've a Next button which triggers different actions according to different fragments. Currently I'm applying following method:

btnNext.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        if(viewPager.getCurrentItem() == 0){
            mViewPager.setCurrentItem(getItem(+1), true);
        }else if(viewPager.getCurrentItem() == 1){
            // trigger something
        }
    }
});

When I am in position 0, if I click next button, viewPager swipes to second fragment and both conditions are triggered! Isn't it supposed to be the first one only ? How to trigger one action at a time for corresponding fragment position? Any help will be greatly appreciated.

Upvotes: 0

Views: 474

Answers (2)

Jeelan
Jeelan

Reputation: 173

Perform operation in listener call back methods

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        //Do it here
    }

    @Override
    public void onPageSelected(int position) {

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
});

Please let me know if it helps.

Upvotes: 0

Bruno Pinto
Bruno Pinto

Reputation: 2013

You can try something like this:

btnNext.setOnClickListener(new OnClickListener() {

 @Override
       public void onClick(View view) {
         if(viewPager.getCurrentItem() == 0){
           viewPager.setCurrentItem(viewPager.getCurrentItem() + 1,true);
         }
         else if(viewPager.getCurrentItem() == 1){
            // trigger something
         }
       }
    }); 

Upvotes: 1

Related Questions