0

我不断收到 MediaPlayer 方法的空指针异常。我终于能够通过将播放和初始化播放函数的代码移动到一个单独的方法中并从 onClick 侦听器内部调用该方法来使播放函数工作。

但是,应用程序暂停功能仍然出现空指针异常。我正在使用媒体播放器的暂停方法。如何暂停工作?我认为问题出在我的代码结构及其组织方式的某个地方。

我尝试将媒体播放器的初始化移动到代码中的不同位置。而且似乎没有任何效果。有任何想法吗?

// onclick listener for the playing the selected song
playB.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        playSong();
    }
});

// onclick listener for pausing the song that is playing
pauseB.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        pauseSong();
    }
});

// method to pause song
public void pauseSong(){
    player.pause();
    length = player.getCurrentPosition();
}

// method to play song and initialize the MediaPlayer class with one file
// from the drawable folder, need to initialize with something or it will be null
// for that i decided to use an mp3 in R.raw folder
public void  playSong(){
    // Play song
    MediaPlayer player = MediaPlayer.create(this, R.raw.g2);
    player.reset();
    try {
        player.setDataSource(selectedAudioPath);

        player.prepare();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    player.seekTo(length);
    player.start();
} // play method
4

1 回答 1

0

您必须创建一个 MediaPlayer 播放器全局变量。pauseSong() 方法看不到播放器,因此您有 nullPointerException。在你的主类中创建一个 MediaPlayer 播放器,然后在 onPlaySong() 中初始化它,如下所示:

player = MediaPlayer.create(this, R.raw.g2);
于 2012-10-12T01:19:24.290 回答