在类扩展片段活动android中加载声音池
我正在开发一个android应用程序。我的类扩展了fragmentactivity。我正在使用soundpool,使用asyc将声音加载到soundpool。在类扩展片段活动android中加载声音池,android,android-viewpager,soundpool,Android,Android Viewpager,Soundpool,我正在开发一个android应用程序。我的类扩展了fragmentactivity。我正在使用soundpool,使用asyc将声音加载到soundpool。 我在类的oncreate中调用async,并在onpagechagelistner中播放声音。当我运行应用程序时,我得到空指针异常 请查看下面的my onpagechangelistner和Async _mViewPager.setOnPageChangeListener(new OnPageChangeListener()
我在类的oncreate中调用async,并在onpagechagelistner中播放声音。当我运行应用程序时,我得到空指针异常 请查看下面的my 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);
}
}
\u mViewPager.setOnPageChangeListener(新的OnPageChangeListener()
{
已选择页面上的公共无效(整页)
{
如果(第==0页)
{
声音池。播放(1,streamVolume,streamVolume,1,0,1f);
}
否则如果(第==1页)
{
声音池。播放(2,流音量,流音量,1,0,1f);
}
否则如果(第==2页)
{
声音池。播放(3,streamVolume,streamVolume,1,0,1f);
}
}
受保护类MainSoundsforalphabetsleftout扩展异步任务
{
布尔结果=假;
@凌驾
受保护的布尔doInBackground(上下文…参数)
{
Log.e(“内部”,“内部边界”);
soundPoolMapForAlphabetsleftout.put(1,soundPoolForAlphabetsleftout.load(AlphaPager.this,R.raw.tellme,1));
soundPoolMapForAlphabetsleftout.put(2,soundPoolForAlphabetsleftout.load(AlphaPager.this,R.raw.ok,1));
soundPoolForAlphabetsleftout.setOnLoadCompleteListener(新的OnLoadCompleteListener(){
public void onLoadComplete(声音池声音池,int-sampleId,int-status)
{
globe.setSoundPoolForalphabetsleftout(soundPoolForAlphabetsleftout);
}
});
返回true;
}
@凌驾
受保护的void onPostExecute(布尔结果)
{
super.onPostExecute(结果);
Log.e(“内部”,“遗漏alpha的执行后”);
soundPoolleftout=globe.getSoundPoolForalphabetsleftout();
}
@凌驾
受保护的void onPreExecute()
{
super.onPreExecute();
Log.e(“内部”,“预执行遗漏的alpha”);
}
@凌驾
受保护的void onProgressUpdate(整型…值)
{
super.onProgressUpdate(值);
}
}
请帮帮我。从两天开始做这件事。谢谢!首先,向我们展示stacktrace;它将显示您在代码中的哪一行获得空指针,以及在此之前它在做什么 另外,显示您在何处以及如何初始化声音池。它是一个单例类还是在活动中声明的?我使用以下
private static SoundManager _instance = null;
private SoundPool mSoundPool;
private HashMap<Integer, Integer> mSoundPoolMap;
private AudioManager mAudioManager;
private Context mContext;
private static SoundManager\u instance=null;
私人音乐池;
私有HashMap-mSoundPoolMap;
私人音频经理;
私有上下文;
使用hashmap存储我的声音(以及播放、暂停和停止播放声音的方法)
重点是,显示更多代码:)我们看不出哪里出了问题。
`