Android在退出后将音乐添加到MainActivity应用程序崩溃?

时间:2015-03-15 12:18:39

标签: android onpause background-music

我正在创建一个应用程序,其中我有一个启动画面,以及一个有两个按钮的菜单页面。我在菜单页面添加了背景音乐。当我从应用程序退出时,音乐不会停止。我尝试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();
}

}

2 个答案:

答案 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();