ProgrAmmar
ProgrAmmar

Reputation: 3095

onPageScrolled() not being called

I'm trying to get familiar with ViewPager. My code is given below. The problem is that the onPageChangeListener methods are not being called. What can be the problem?

public class TabsViewPagerFragmentActivity extends SherlockFragmentActivity implements ViewPager.OnPageChangeListener {


private ViewPager mViewPager;
private PagerAdapter mPagerAdapter;
private PageIndicator mIndicator;

private static final String[] CONTENT = new String[] { "Home", "Popular", "Chat", "Profile"};

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ActionBar bar = getSupportActionBar();

    View customview = LayoutInflater.from(this).inflate(R.layout.actionbar_custom_layout, null);

    ImageView im = (ImageView)customview.findViewById(R.id.add);

    /*im.getLayoutParams().height = h;
    im.getLayoutParams().width = h;*/

    bar.setCustomView(customview);
    bar.setDisplayShowCustomEnabled(true);
    bar.setDisplayShowTitleEnabled(false);
    bar.setDisplayShowHomeEnabled(false);
    // Inflate the layout
    setContentView(R.layout.tabs_viewpager_layout);


    // Intialise ViewPager
    this.intialiseViewPager();

    mIndicator = (TitlePageIndicator)findViewById(R.id.titles);
    mIndicator.setViewPager(mViewPager);

    TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.titles);

    indicator.setTextColor(0xAAfb891e);
    indicator.setSelectedColor(0xFFfb891e);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {


    menu.add("Search")
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);


    return true;
}



public int getCount() {
    return CONTENT.length;
}


protected void onSaveInstanceState(Bundle outState) {

    super.onSaveInstanceState(outState);
}
private void intialiseViewPager() {


    this.mPagerAdapter  = new PagerAdapter(super.getSupportFragmentManager(),
                                            fragments);

    this.mViewPager = (ViewPager)super.findViewById(R.id.viewpager);
    this.mViewPager.setAdapter(this.mPagerAdapter);
    this.mViewPager.setOnPageChangeListener(this);



}

public void onPageScrolled(int position, float positionOffset,
        int positionOffsetPixels) {
    // TODO Auto-generated method stub

    System.out.println(positionOffsetPixels);

}

public void onPageSelected(int position) {
    // TODO Auto-generated method stub

    System.out.println(position);
}


public void onPageScrollStateChanged(int state) {
    // TODO Auto-generated method stub

    System.out.println(state);

}
}

What I mean is that I dont get anything printed in the Logcat on scrolling my pages.

Upvotes: 24

Views: 11215

Answers (4)

Leonardo Costa
Leonardo Costa

Reputation: 1014

I followed ProgrAmmar's tip, but it didn't work for me. In my case, I used

mIndicator.setCurrentItem(position);

and it worked fine.

Upvotes: 0

ProgrAmmar
ProgrAmmar

Reputation: 3095

Well I solved the problem myself after some trial error.

Since I was introducing a TitlePagerIndicator 'mIndicator', I had to call mIndicator.setOnPageChangeListener(this); and not mViewPager.setOnPageChangeListener(this);

Upvotes: 119

Chris Fei
Chris Fei

Reputation: 1317

The System.out stream doesn't print to Logcat. Use the Log class instead like Log.d("MyApp","message").

Upvotes: 2

Vipul
Vipul

Reputation: 28093

The way you have written your code i guess you are implementing ViewPager.OnPageChangeListener

Change

this.mViewPager.setOnPageChangeListener(mIndicator);

To

this.mViewPager.setOnPageChangeListener(this);

Upvotes: 0

Related Questions