我正在创建一个应用程序,其中我有一个启动画面,以及一个有两个按钮的菜单页面。我在菜单页面添加了背景音乐。当我从应用程序退出时,音乐不会停止。我尝试onPause()和onStop()甚至onDestroy()方法,但在我退出应用程序后添加它们时,应用程序崩溃显示“遗憾的是appname已停止工作” 这是我的代码,请帮我解决这个问题。 package 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();
}
}
答案 0 :(得分:1)
实际上是backgroundson==null
onDestroy()
,所以你有 NPE
所以initialized
backgroundson
喜欢
MediaPlayer backgroundsong;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.......
........
backgroundsong= MediaPlayer.create(MainActivity.this, R.raw.penguinshort);
backgroundsong.start();
}
答案 1 :(得分:0)
嘿,你在函数中创建一个局部变量,这样你的全局变量 null ......
在某个函数中定义同名局部变量时,此函数中变量名的使用指向本地变量名,而不是全局变量名。
MediaPlayer backgroundsong=MediaPlayer.create(MainActivity.this, R.raw.penguinshort);
backgroundsong.start();
更改为
backgroundsong=MediaPlayer.create(MainActivity.this, R.raw.penguinshort);
backgroundsong.start();