gpt4 book ai didi

android - Android ViewPager 中错误的位置值

转载 作者:太空狗 更新时间:2023-10-29 16:16:04 24 4
gpt4 key购买 nike

我正在尝试使用 ViewPager 实现由 3 个 fragment (或 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。

我做错了什么?

最佳答案

您一定要在 getItem 中使用位置值,不要调用 getCurrentItem,因为寻呼机将创建不是当前项目且不在屏幕上的项目。默认情况下,寻呼机的离屏页面限制为 2。因此,当它第一次创建时,getItem 将在位置 0 处被调用,然后在位置 1 处立即再次调用。位置 1 处的 fragment 不是当前项目,但它是在屏幕外创建的这样用户就可以开始滑动并查看它。然后,当您完成滑动时,将调用位置为 2 的 getItem 以预加载下一张也是最后一张幻灯片。

要完成“我想要幻灯片 1 上的内容 1,幻灯片 2 上的内容 2”,您的 SlidesFragment 需要一个参数(存储在参数包中)告诉它要显示哪些内容的位置展示。或者,更有可能的是,您将根据位置创建 3 种不同的 fragment 类型。

关于android - Android ViewPager 中错误的位置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27613725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com