Java 媒体播放器在按下后退按钮并再次打开应用程序后崩溃
我的应用程序启动时有一个菜单,在那里你点击一个按钮开始应用程序。一旦mediaplayer启动,就开始播放,但如果我单击“上一步”按钮,再次单击该按钮启动应用程序,然后单击该按钮停止音乐,应用程序就会崩溃。这是密码。它在一部手机前坠毁了,但在模拟器中运行良好。如有任何意见,将不胜感激。谢谢Java 媒体播放器在按下后退按钮并再次打开应用程序后崩溃,java,android,media-player,Java,Android,Media Player,我的应用程序启动时有一个菜单,在那里你点击一个按钮开始应用程序。一旦mediaplayer启动,就开始播放,但如果我单击“上一步”按钮,再次单击该按钮启动应用程序,然后单击该按钮停止音乐,应用程序就会崩溃。这是密码。它在一部手机前坠毁了,但在模拟器中运行良好。如有任何意见,将不胜感激。谢谢 int cancion = 1, cancion1 = 1; MediaPlayer song, song1, song2, song3, song4; if (cancion == 1) {
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;
}
}
日志:
04-22:12:47.151:W/ActivityNative(12915):发送活动\空闲\事务
04-22:12:47.541:W/dalvikvm(12915):threadid=1:线程以未捕获异常退出(组=0x400207d8)
04-22:12:47.551:E/AndroidRuntime(12915):致命异常:主
04-22:12:47.551:E/AndroidRuntime(12915):java.lang.NullPointerException
04-22:12:47.551:E/AndroidRuntime(12915):在com.try.player.DragActivity$5.onClick(DragActivity.java:1772)
04-22:12:47.551:E/AndroidRuntime(12915):在android.view.view.performClick(view.java:2408)
04-22:12:47.551:E/AndroidRuntime(12915):在android.view.view$PerformClick.run(view.java:8816)
04-22:12:47.551:E/AndroidRuntime(12915):在android.os.Handler.handleCallback(Handler.java:587)上
04-22:12:47.551:E/AndroidRuntime(12915):在android.os.Handler.dispatchMessage(Handler.java:92)上
04-22:12:47.551:E/AndroidRuntime(12915):在android.os.Looper.loop(Looper.java:123)上
04-22:12:47.551:E/AndroidRuntime(12915):位于android.app.ActivityThread.main(ActivityThread.java:4633)
04-22:12:47.551:E/AndroidRuntime(12915):位于java.lang.reflect.Method.Invokenactive(本机方法)
04-22:12:47.551:E/AndroidRuntime(12915):位于java.lang.reflect.Method.invoke(Method.java:521)
04-22:12:47.551:E/AndroidRuntime(12915):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
04-22:12:47.551:E/AndroidRuntime(12915):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-22:12:47.551:E/AndroidRuntime(12915):在dalvik.system.NativeStart.main(本机方法)更改您的onPause()
以释放所有MediaPlayer
对象,而不是尝试重新启动当前播放的歌曲
大概是这样的:
@Override
public void onPause(){
super.onPause();
song.release();
song1.release();
//and so on
}
不,它也不起作用。实际上,它并没有一直得到错误。您的错误在这一行上,因为有东西是空的:E/AndroidRuntime(12915):在com.try.player.DragActivity$5.onClick(DragActivity.java:1772)04-22我将尝试删除这一行。感谢汉克斯发现了错误。我必须释放我所有的媒体播放器。包括1772行的那个