按下后退按钮后媒体播放器崩溃并再次打开应用程序
嗯,我的应用程序有一个菜单,当它启动时,你有一个按钮开始与应用程序。只要它启动mediaplayer开始播放,但如果我点击返回按钮,点击按钮再次启动应用程序,然后单击按钮停止音乐应用程序崩溃。继承人的代码。它坠毁在一个手机,但在模拟器,它工作正常。任何评论将不胜感激。感谢按下后退按钮后媒体播放器崩溃并再次打开应用程序
int cancion = 1, cancion1 = 1;
MediaPlayer song, song1, song2, song3, song4;
if (cancion == 1)
{
song1.start();
playing = true;
song1.setLooping(true);
song = song1;
}
music.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View view) {
song.pause();
song.seekTo(0);
playing = false;
cancion = cancion+1;
if (cancion == 5)
{
cancion = 1;
}
if (cancion == 1)
{
song1.start();
playing = true;
song1.setLooping(true);
song = song1;
}
else if (cancion == 2)
{
song2.start();
playing = true;
song2.setLooping(true);
song = song2;
}
else if (cancion == 3)
{
song3.start();
playing = true;
song3.setLooping(true);
song = song3;
}
else if (cancion == 4)
{
song4.start();
playing = true;
song4.setLooping(true);
song = song4;
}
return true;
}
});
music.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (!playing)
{
song.start();
playing = true;
}
else
{
song.pause();
song.seekTo(0);
playing = false;
cancion1 = 2;
}
}
});
@Override
protected void onResume() {
super.onResume();
if(!song.isPlaying() && cancion1 != 2)
{
song.start();
playing = true;
}
}
@Override
public void onPause(){
super.onPause();
if(song.isPlaying())
{
song.pause();
song.seekTo(0);
playing = false;
}
}
logcat的:
04-22 22:12:47.151:W/ActivityNative(12915):发送ACTIVITY_IDLE_TRANSACTION 04-22 22:12:47.541:W/dalvikvm(12915):线程ID = 1:线程退出未捕获的异常(组= 0x400207d8) 04-22 22:12:47.551:E/AndroidRuntime(12915):致命例外:主 04-22 22:12:47.551:E/AndroidRuntime(12915) :java.lang.NullPointerException 04-22 22:12:47.551:E/AndroidRuntime(12915):at com.try.player.DragActivity $ 5.onClick(DragActivity.java:1772) 04-22 22:12:47.551 :E/AndroidRuntime(12915):at a ndroid.view.View.performClick(View.java:2408) 04-22 22:12:47.551:E/AndroidRuntime(12915):at android.view.View $ PerformClick.run(View.java:8816) 04 -22 22:12:47.551:E/AndroidRuntime(12915):在android.os.Handler.handleCallback(Handler.java:587) 04-22 22:12:47.551:E/AndroidRuntime(12915):在android。 os.Handler.dispatchMessage(Handler.java:92) 04-22 22:12:47.551:E/AndroidRuntime(12915):at android.os.Looper.loop(Looper.java:123) 04-22 22: 12:47.551:E/AndroidRuntime(12915):在android.app.ActivityThread.main(ActivityThread.java:4633) 04-22 22:12:47.551:E/AndroidRuntime(12915):在java.lang.reflect。 Method.invokeNative(Native Method) 04-22 22:12:47.551:E/AndroidRuntime(12915):at java.lang.reflect.Method.invoke(Method.java:521) 04-22 2 2:12:47.551:E/AndroidRuntime(12915):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:858) 04-22 22:12:47.551:E/AndroidRuntime(12915) :at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 04-22 22:12:47.551:E/AndroidRuntime(12915):at dalvik.system.NativeStart.main(Native Method)
更改您的onPause()
以释放所有MediaPlayer
对象,而不是尝试重新启动正在播放的歌曲。
事情是这样的:
@Override
public void onPause(){
super.onPause();
song.release();
song1.release();
//and so on
}
不,它也不起作用。实际上它并没有得到错误。 – 2012-04-23 01:07:36
发布什么logcat说错误是 – kmb64 2012-04-23 02:05:57
Logcat添加到帖子。 – 2012-04-23 02:18:01