尝试调用虚拟方法' void android.media.MediaPlayer.start()'在null对象引用上

时间:2018-04-14 07:51:45

标签: android nullpointerexception

尝试调用虚拟方法' void android.media.MediaPlayer.start()'在空对象引用上

以下是代码 -

package com.example.zhengli.mediaplayerdemo;

import android.media.MediaPlayer;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private Button mb1;

    private MediaPlayer mpplayer;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mb1=(Button)findViewById(R.id.play);
        mb1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mpplayer=new MediaPlayer();
                mpplayer=MediaPlayer.create(MainActivity.this,R.raw.mp);
                mpplayer.start();
            }
        });

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(mpplayer.isPlaying()){
            mpplayer.stop();
        }
        mpplayer.release();//释放资源
    }
}

1 个答案:

答案 0 :(得分:0)

根据mediaplayer.create的开发人员文档

  

MediaPlayer.create(Context context,int resid)返回MediaPlayer对象,如果创建失败,则返回null。

检查您的媒体文件

你可以在你的onDestory上升空指针异常而不是

if(mpplayer!-null){

     if(mpplayer.isPlaying()){
            mpplayer.stop();
        }
        mpplayer.release();

}