如何更改查看页面?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

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

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

问题是,我将首选项的这个数字更改为比我以前查看过的页面索引更少的其他索引,我的应用程序就会崩溃,因为当我返回到带有ViewPager的活动时,这个索引是不允许的。它可以简单地通过更改ActiveViewPager的页面来修复。有什么办法吗?

提问于
用户回答回答于

我不确定我是否完全理解这个问题,但从你问题的标题来看,我猜你要找的是pager.setCurrentItem( num )。允许以编程方式切换到ViewPager.

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

用户回答回答于

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

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

当你viewPager显示一组10页的第3页,然后更改为只有5的一组,然后调用notifyDataSetChanged(),你会发现你现在正在看新的第3页。如果之前正在查看旧集的第8页,则在放入新集并调用notifyDataSetChanged()你会发现你现在正在查看新集的最后一页,而不是崩溃。

扫码关注云+社区