按下后退按钮后媒体播放器崩溃并再次打开应用程序

问题描述:

嗯,我的应用程序有一个菜单,当它启动时,你有一个按钮开始与应用程序。只要它启动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 

} 
+0

不,它也不起作用。实际上它并没有得到错误。 – 2012-04-23 01:07:36

+0

发布什么logcat说错误是 – kmb64 2012-04-23 02:05:57

+0

Logcat添加到帖子。 – 2012-04-23 02:18:01