我正在尝试开发一个应用程序,它将显示数字1-10,并带有一个声音.
使用mobile.tutsplus中的示例进行横向扫描,我已经达到了所有数字正确显示的舞台,但当我们从2回来时,声音为1不会来.(最初当我的活动以1开头). 10也不会来.
解决之前的问题,1和2的声音将立即出现,我现在明白,instantiateItem()将被调用来预取下一个条目.
我想知道我应该在什么时候播放声音?目前它是在instantiateItem()中完成的,这就是为什么我没有听到它的1和10.我以为我可以在finishUpdate()中执行它,但我看到它被多次调用.
根据培训指南,对于这样一个对象的集合,应该使用FragmentStatePagerAdapter,我将尝试移动到这个对象.但我真的很想让这个工作正常.
正如你所猜到的,我是一个新手,这是我的第一个应用程序.如果需要,我可以粘贴代码.
解决方法
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(活动或片段),而不是你的适配器.