95 可读性
 将光标移到文章中的句子上,可以查看原文。 显示译文      显示原文      双语对照

分享 |
如何更改viewpager的页面?

59 0

我在我的应用程序中使用ViewPager并在主 Activity 中定义它。 onCreate 方法中,我从SharedPreferences加载了一些页面,然后将它的传递给 PagerAdapter:


@Override
public int getCount() { return numberOfPages;
}


问题是,如果我在首选项( 或者另一个 Activity ) 中更改这个数字,而不是之前查看的页面索引,那么我的应用程序会崩溃,因为当我返回到 Activity 时,这个索引超出了。 它可以通过改变活动viewpager的页面来修复。 有什么可以做的?

时间: 15年08月05日 原作者: Roman

177 0

我'我不确定我是否完全理解了这个问题,但是从你的题目的标题,我'猜测 pager.setCurrentItem( num ) 你寻找的东西。 允许你以编程方式切换到 ViewPager 中的另一个页面。

如果这不是问题,我需要查看logcat中的堆栈跟踪。

发布时间: 15年08月05日 原作者: Mark Allison
3 0

如果不检查你的代码,我想你所描述的是你的页面不同步并且你的数据陈旧。

你说你正在改变页面的数量,然后崩溃,因为你正在访问旧的页面集。 这听起来好像你在改变数据后没有调用 pageAdapter.notifyDataSetChanged()

当你的viewPager 显示一组 10页的页面 3,并且你更改为只包含 5的集合时,你将看到 notifyDataSetChanged(),你将发现你现在正在查看新集合的第 3页。 如果你以前查看过旧集的第 8页,在放入新设置并调用 notifyDataSetChanged() 之后,你会发现现在正在查看新设置的最后一页,而不会崩溃。

如果你只是更改当前页面,你可能只是在掩盖问题。

发布时间: 15年08月05日 原作者: KlimczakM
...