【发布时间】:2014-12-23 03:36:28
【问题描述】:
我正在尝试使用 ViewPager 实现由 3 个片段(或 3 个布局)组成的 3 张幻灯片,我想知道我当前显示的是哪张幻灯片以显示适当的内容。简而言之,我想要幻灯片 1 上的内容 1,幻灯片 2 上的内容 2,依此类推。
这是我的 Activity 中的实际代码(来自 android 官方文档):
public class SliderActivity extends FragmentActivity {
private static final int NUM_PAGES = 3;
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_slider);
// Instantiate a ViewPager and a PagerAdapter.
mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
}
@Override
public void onBackPressed() {
if (mPager.getCurrentItem() == 0) {
// If the user is currently looking at the first step, allow the system to handle the
// Back button. This calls finish() on this activity and pops the back stack.
super.onBackPressed();
} else {
// Otherwise, select the previous step.
mPager.setCurrentItem(mPager.getCurrentItem() - 1);
}
}
// A simple pager adapter that represents 3 ScreenSlidePageFragment objects, in sequence.
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
System.out.println("POSITION = " + position); // Or mPager.getCurrentItem()
return new SlidesFragment();
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
}
无论我多么努力,getCurrentItem() 或 position 仍然会打印错误的值。只有第二张幻灯片向控制台发送一个数字。向右滑动时为 2,向左滑动时为 0。
我做错了什么?
【问题讨论】:
-
我在想幻灯片还在内存中,所以没必要再弄了。应用启动时你有什么收获吗?
标签: android slider android-viewpager fragment