2013-05-30 44 views
0

我正在開發一個android應用程序。我的類擴展了fragmentactivity.I使用soundpool,使用asyc將聲音加載到soundpool。
我調用類的OnCreate異步,和我打內線onpagechagelistner的聲音。當我運行應用程序時,我得到空指針異常。在課程中加載soundpool擴展片段活動android

請看下面我的onpagechangelistner和Async。

_mViewPager.setOnPageChangeListener(new OnPageChangeListener() 
    { 
     public void onPageSelected(int page) 
     { 
      if(page==0) 
      { 
       soundPool.play(1, streamVolume, streamVolume, 1, 0, 1f); 
      } 
      else if(page==1) 
      { 
       soundPool.play(2, streamVolume, streamVolume, 1, 0, 1f); 
      } 
      else if(page==2) 
      { 
       soundPool.play(3, streamVolume, streamVolume, 1, 0, 1f); 
      } 
    } 
protected class MainSoundsforalphabetsleftout extends AsyncTask<Context, Integer, Boolean> 
{ 
    boolean result = false; 
    @Override 
    protected Boolean doInBackground(Context... params) 
    { 
     Log.e("inside","doin bg"); 
     soundPoolMapForAlphabetsleftout.put(1, soundPoolForAlphabetsleftout.load(AlphaPager.this, R.raw.tellme, 1)); 
     soundPoolMapForAlphabetsleftout.put(2, soundPoolForAlphabetsleftout.load(AlphaPager.this, R.raw.okay, 1)); 
     soundPoolForAlphabetsleftout.setOnLoadCompleteListener(new OnLoadCompleteListener() { 

      public void onLoadComplete(SoundPool soundPool, int sampleId, int status) 
      { 
       globe.setSoundPoolForalphabetsleftout(soundPoolForAlphabetsleftout); 
      } 
     }); 
     return true; 
    } 

    @Override 
    protected void onPostExecute(Boolean result) 
    { 
     super.onPostExecute(result); 
        Log.e("inside","postexecute of left out alpha");   
        soundPoolleftout = globe.getSoundPoolForalphabetsleftout(); 
    } 

    @Override 
    protected void onPreExecute() 
    { 
     super.onPreExecute(); 
       Log.e("inside","preexecute of left out alpha");   
      } 

    @Override 
    protected void onProgressUpdate(Integer... values) 
    { 
     super.onProgressUpdate(values); 
    } 
      } 

請幫我一把。自兩天以來一直在努力。
謝謝!

回答

0

首先,向我們展示堆棧跟蹤;它會在代碼的哪一行顯示你正在得到你的空指針以及它在那之前做了什麼。

另外,顯示您在哪裏以及如何初始化該聲音池。它是單身類還是在活動中聲明?我使用以下

private static SoundManager _instance = null; 
private SoundPool mSoundPool; 
private HashMap<Integer, Integer> mSoundPoolMap; 
private AudioManager mAudioManager; 
private Context mContext; 

與hashmap存儲我的聲音(和播放,暫停,停止播放聲音的方法)。

點是,表現出更多的代碼:)我們不能看到的東西可能會錯誤。 `