我有一个媒体播放器作为全局变量,我想在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();
}
答案 0 :(得分:0)
我认为你误解了android应用程序循环..当你按下主页按钮退出应用程序时,onStop()与onPause()一起被调用。
由于这个原因,每次都会释放MediaPlayer,因此您将收到该空指针Exception。
我相信,你想在应用程序完全关闭时停止音乐,然后用onDestroy()替换onStop()...这是与空指针异常相关的唯一问题..