Android 添加音乐到 MainActivity 应用退出后崩溃?

Android Adding music to MainActivity app crashes after exiting?

我正在制作一个应用程序,其中有一个初始屏幕和一个有两个按钮的菜单页面。我在菜单页面添加了背景音乐。当我退出应用程序时,音乐不会停止。我尝试了 onPause() 和 onStop() 甚至 onDestroy() 方法,但是在我退出应用程序时添加它们后,应用程序崩溃显示 "Unfortunately appname has stopped working" 这是我的代码,请帮助我,因为我是新手。 包裹 com.example.appname;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.Window;
import android.view.WindowManager;


public class MainActivity extends Activity {
MediaPlayer backgroundsong;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_main);
    MediaPlayer backgroundsong= MediaPlayer.create(MainActivity.this, R.raw.penguinshort);
    backgroundsong.start();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}


@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
   backgroundsong.release();
}

}

实际上你的 backgroundson==nullonDestroy(),所以你得到了 NPE

所以 initialized backgroundson 喜欢

MediaPlayer backgroundsong;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.......
........
backgroundsong= MediaPlayer.create(MainActivity.this, R.raw.penguinshort);
backgroundsong.start();
}

嘿,你在函数中创建了一个局部变量,所以你的全局变量是 null...

在某个函数中定义同名局部变量时,该函数中变量名的用法指向局部变量,而不是全局变量。

MediaPlayer backgroundsong=MediaPlayer.create(MainActivity.this, R.raw.penguinshort);
backgroundsong.start();

改为

backgroundsong=MediaPlayer.create(MainActivity.this, R.raw.penguinshort);
backgroundsong.start();