我正在尝试开发一个应用程序,它会显示数字1-10,并伴随着该数字的声音。
使用mobile.tutsplus中的示例进行水平滑动,我已经达到了一个正确显示所有数字的阶段,但是当我们从1
返回时,2
的声音将不会出现。 (最初我的活动以1
开头)。它也不会出现在10
。
在解决了1
和2
的声音同时出现的上一个问题后,我现在明白将调用instantiateItem()
来预取下一个条目。
我想知道我应该在什么时候播放声音?目前,这是在instantiateItem()
完成的,这就是为什么我没有听到1
和10
的原因。我以为我可以在finishUpdate()
中做到这一点,但我看到它被多次调用。
根据培训指南,对于这样的对象集合FragmentStatePagerAdapter
应该被使用,我将尝试转向它。但我真的想让这个工作正常。
你已经猜到我是新手,这是我的第一款应用。如果需要,我可以粘贴代码。
答案 0 :(得分:14)
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(活动或片段)而不是你的适配器。