Reputation: 3095
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
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
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
Reputation: 1317
The System.out
stream doesn't print to Logcat. Use the Log
class instead like Log.d("MyApp","message")
.
Upvotes: 2
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