我正在开发一个Android应用程序。我的课程扩展了fragmentactivity。我正在使用soundpool,使用asyc将声音加载到soundpool 我在类的oncreate中调用异步,我正在onpagechagelistner中播放声音。当我运行应用程序时,我得到空指针异常。
请查看我的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 :(得分:0)
首先,向我们展示堆栈跟踪;它会在你的代码中的哪一行显示你正在获取空指针以及之前它正在做什么。
此外,还会显示您初始化该Soundpool的位置和方式。它是单例类还是在活动中声明?我使用以下
private static SoundManager _instance = null;
private SoundPool mSoundPool;
private HashMap<Integer, Integer> mSoundPoolMap;
private AudioManager mAudioManager;
private Context mContext;
使用hashmap存储我的声音(以及播放,暂停,停止播放声音的方法)。
点是,显示更多代码:)我们无法看到事情可能出错的地方。 `