Android:ViewPager 总是在开始时显示第二页

Posted

技术标签:

【中文标题】Android:ViewPager 总是在开始时显示第二页【英文标题】:Android: ViewPager always show the second page at the start 【发布时间】:2014-07-03 05:59:26 【问题描述】:

我创建了一个小的 android 应用程序,它使用 Viewpager 来阅读故事。这是我的代码:

重写 FragmentStatePagerAdapter 的 getItem() 方法:

@Override
    public Fragment getItem(int position) 
    TextStoryChapter chapter = (TextStoryChapter) getIntent().getSerializableExtra("chapter");
        return ScreenSlidePageFragment.create(position,chapter);
    

ScreenSlidePageFragment类的create()方法:

public static final String ARG_PAGE = "page";
private int mPageNumber;
private static String chapterName;
private static String content;

public static ScreenSlidePageFragment create(int pageNumber, TextStoryChapter chapter) 
    ScreenSlidePageFragment fragment = new ScreenSlidePageFragment();
    Bundle args = new Bundle();
    args.putInt(ARG_PAGE, pageNumber);
    TextStoryChapterDetail detail = chapter.pages.get(pageNumber);
    chapterName = "Page " + Integer.toString(detail.pageNo);
    content = detail.content;
    fragment.setArguments(args);
    return fragment;

还有ScreenSlidePageFragment类的onCreate()方法:

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    mPageNumber = getArguments().getInt(ARG_PAGE);
    Log.e("PageNumber", Integer.toString(mPageNumber));

但是当我运行应用程序时,ViewPager 总是在开始时显示第 2 页的内容(我创建了一个有 5 个内容页的TextStoryChapter),在下一页显示相同的内容。第 1 页的内容就消失了。当我导航到第 3 页并滑回第 1 页时,一切又恢复正常,不再有第 2 页的重复内容,我不知道为什么以及如何发生。任何人都可以帮助我吗?非常感谢!

【问题讨论】:

【参考方案1】:

锁定您的代码。创建 ViewPager 时,2 个变量 chapterNamechapterContent 数据将被重新分配,您的第 1 页数据将丢失。您应该将您的数据发布到Bundle,这会有所帮助。

【讨论】:

以上是关于Android:ViewPager 总是在开始时显示第二页的主要内容,如果未能解决你的问题,请参考以下文章

Android ViewPager setCurrentItem 在 onResume 后不起作用

将 backstack 与 ViewPager 一起使用

是否可以为android的viewpager设置透明

viewPager使用时加载数据时显示IllegalStateException异常,解决不了。。。。

Android界面实现使用PagerTabStrip实现有滑动标签的Viewpager

Android界面实现使用PagerTabStrip实现有滑动标签的Viewpager