首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何更改ViewPager的页面?

如何更改ViewPager的页面?
EN

Stack Overflow用户
提问于 2011-09-15 08:25:11
回答 3查看 121.2K关注 0票数 152

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

代码语言:javascript
复制
@Override
public int getCount() {
    return numberOfPages;
}

问题是,如果我在Preferences (或另一个活动)中将这个数字更改为比我之前查看的页面索引小的其他数字,我的应用程序就会崩溃,因为当我用这个ViewPager返回到活动时,这个索引是越界的。它可以简单地通过更改活动ViewPager的页面来修复。有什么办法可以做到吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-16 22:40:44

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

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

票数 397
EN

Stack Overflow用户

发布于 2014-01-27 07:15:48

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

您说您正在更改页面的数量,然后崩溃,因为您正在访问旧的页面集。在我看来,您在更改数据后并没有调用pageAdapter.notifyDataSetChanged()

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

如果你只是简单地改变你的当前页面,你可能只是掩盖了问题。

票数 19
EN

Stack Overflow用户

发布于 2016-09-16 05:05:55

要切换到另一个页面,请尝试使用以下代码:

代码语言:javascript
复制
viewPager.postDelayed(new Runnable()
{
    @Override
    public void run()
    {
        viewPager.setCurrentItem(num, true);
    }
}, 100);
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7424562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档