MediaPayer在onPause和onResume中为null

时间:2016-03-26 18:57:39

标签: java android nullpointerexception media-player

我有一个媒体播放器作为全局变量,我想在onResume中恢复它并暂停在onPause中,但两者都给我nullpointerException。我不知道为什么它会将媒体播放器视为空。我不瘦我们需要log coz我知道错误是nullpointerexception并在下面提到的行上。这是我的代码

      MediaPlayer md;
      int position;
@Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_slide_show);
        md = new MediaPlayer();
        md.setAudioStreamType(AudioManager.STREAM_MUSIC);
        md = MediaPlayer.create(this, R.raw.tone);
        md.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            md.start();
        }
    });
@Override
    public void onPause(){
       if(md != null ){
       md.pause();
       position = md.getCurrentPosition();
    }
      super.onPause();

}
@Override
public void onResume(){
    super.onResume();
    if(md != null){
        md.start();    NullPointerException here
        md.seekTo(position);
    }

}

@Override
public void onStop(){
    if(md != null){
    md.stop();      NullPointerException here
    md.release();
    md = null;}
    super.onStop();
}

1 个答案:

答案 0 :(得分:0)

我认为你误解了android应用程序循环..当你按下主页按钮退出应用程序时,onStop()与onPause()一起被调用。

由于这个原因,每次都会释放MediaPlayer,因此您将收到该空指针Exception。

我相信,你想在应用程序完全关闭时停止音乐,然后用onDestroy()替换onStop()...这是与空指针异常相关的唯一问题..