2014-01-14 75 views
0

我在这里遇到麻烦,因为我试图在用户执行图像刷卡时播放声音:没有声音正在播放。声音没有在图像刷卡游戏中播放

OnPageChangeListener附加到我的ViewPager时,我收到了一个错误。另外,不使用OnPageListener

相关的错误代码:

package com.android.viewpager; 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v4.view.ViewPager.OnPageChangeListener; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 
    public static MediaPlayer mp = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ViewPager viewPager = (ViewPager)findViewById(R.id.view_pager); 
     ImagePagerAdapter adapter = new ImagePagerAdapter(); 
     viewPager.setAdapter(adapter); 
     viewPager.setOnPageChangeListener(mOnPageListener); 
    } 

    private class ImagePagerAdapter extends PagerAdapter { 

     private int[] mImages = new int[] {R.drawable.no1,R.drawable.no2,R.drawable.no3,R.drawable.no4,R.drawable.no5,R.drawable.no6,R.drawable.no7,R.drawable.no8,R.drawable.no9,}; 


     private int[] mAudio= new int[]{R.raw.one,R.raw.two,R.raw.three,R.raw.four,R.raw.five,R.raw.six,R.raw.seven,R.raw.eight,R.raw.eight,R.raw.nine}; 
     @Override 
     public int getCount() { 
     return mImages.length; 
      } 
     @Override 
     public boolean isViewFromObject(View view, Object object) { 
      return view == ((ImageView) object); 
       } 
     @Override 
     public Object instantiateItem(ViewGroup container, int position) { 
      Context context = MainActivity.this; 
      ImageView imageView = new ImageView(context); 
      int padding =context.getResources(). 
        getDimensionPixelSize(R.dimen.activity_vertical_margin); 
      imageView.setPadding(padding, padding, padding, padding); 
      imageView.setScaleType(ImageView.ScaleType.CENTER); 
      imageView.setImageResource(mImages[position]); 
      ((ViewPager) container).addView(imageView, 0); 
      return imageView; 
      } 

     public OnPageChangeListener mOnPageListener = new OnPageChangeListener() { 

      @Override public void onPageSelected(int position) { 
       //for Sound 
       if (mp != null) { 
        mp.reset(); 
        mp.release(); 
       } 
       mp = MediaPlayer.create(MainActivity.this, mAudio[position]); 
       mp.start(); 

      } 
      @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} 
      @Override public void onPageScrollStateChanged(int state) {} 

     }; 


     @Override 
     public void destroyItem(ViewGroup container, int position, Object object) { 
      ((ViewPager) container).removeView((ImageView) object); 
     } 
    } 
    } 

我真的陷入严重这里。请告诉我错误在哪里。

回答

0

我不知道你的错误是什么,但如果你说这是“通过附加OnPageChangeListener我viewPager”,我会告诉你这样做:

也许试图让你OnPageChangeListener mOnPageListener出来的你的ImagePagerAdapter,直接放在你的Activity

或者设置OnPageChangeListener到适配器:

viewPager.setOnPageChangeListener(adapter); 

,让您的Adapter实施onPageChangedListener

希望它会帮助

+0

是的,如果我没有使用OnPageChangeListener的声音,然后声音播放良好,但它不符合图像。 –

+0

你有没有试过我的建议?尝试在onPageSelected方法中放入一个日志来查看它是否被调用。 – Andros

+0

我试过了,但还是不行。这是否是这个问题的替代解决方案? –