kee*_*ach 2 android slider fragment android-viewpager
我正在尝试用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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
无论我怎么努力,getCurrentItem()或者position仍然打印错误的值.只有第二张幻灯片才会向控制台发送一个号码.向右滑动时为2,向左滑动时为0.
我究竟做错了什么 ?
您肯定希望使用位置值getItem,不要调用,getCurrentItem因为寻呼机将创建不是当前项而不是屏幕上的项.默认情况下,寻呼机的屏幕外页面限制为2.因此,当它首次创建时,getItem将以0的位置调用,然后立即再次调用位置1.位置1处的片段不是当前项目,但它是在屏幕外创建的,因此用户可以开始滑动并且看见.然后,当您完成滑动时,getItem将调用位置为2以预加载下一张和最后一张幻灯片.
要完成"我想要幻灯片1上的内容1,幻灯片2上的内容2",您SlidesFragment需要获取一个参数(存储在参数包中),该位置告诉它要显示哪些内容.或者,更有可能的是,您将根据位置创建3种不同的片段类型.
| 归档时间: |
|
| 查看次数: |
2726 次 |
| 最近记录: |