2014-01-14 76 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

我試過了,但還是不行。這是否是這個問題的替代解決方案? –