14

我正在尝试开发一个应用程序,该应用程序将显示数字 1-10 以及该数字的声音。

使用 mobile.tutsplus 中的示例进行水平滑动,我已经达到了所有数字都正确显示1但当我们从2. (它最初是在我的活动以 开头时出现的1)。也不会来10

在解决了上一个声音 for12会立即出现的问题之后,我现在明白instantiateItem()将调用它来预取下一个条目。

我想知道我应该在什么时候播放声音?目前它已经完成,instantiateItem()这就是为什么我没有听到它的原因1and 10。我以为我可以做到,finishUpdate()但我看到它被多次调用。

根据培训指南,FragmentStatePagerAdapter应该使用这样的对象集合,我将尝试移至该对象。但我真的很想让它正常工作。

正如您已经猜到的那样,我是一个新手,这是我的第一个应用程序。如果需要,我可以粘贴代码。

4

1 回答 1

18

ViewPager 有一个 setOnPageChangeListener() 方法,它允许您设置一个对象,当新页面成为用户正在查看的页面时,该对象将获得回调。

这样的事情会让你走上正确的道路:

mPageChangeListener = new OnPageChangeListener() {

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageSelected(int pos) {
        playSoundForPage(pos);
    }

};
yourViewPager.addOnPageChangeListener(mPageChangeListener);

但是,您必须将其放入拥有您的 ViewPager(活动或片段)而不是您的适配器的任何地方。

于 2013-02-22T00:32:11.293 回答