문제

I keep getting null pointer exceptions for methods of MediaPlayer. I was finally able to get the play function to work by moving the code for play and initialize of play functions into a separate method and call that method from inside the onClick listener.

However am still getting null pointer exception for the apps pause function. I am using pause method of media player. How to the get pause to work? I think the problem is somewhere in the structure of my code and how it is organized.

I tried moving the initialization of the Media player to a different place in the code. and and nothing seems to work. Any ideas?

// 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
도움이 되었습니까?

해결책

You have to make a MediaPlayer player global variable. player is not visible for the pauseSong() method therefore you have nullPointerException. Create a MediaPlayer player in your main class and then in onPlaySong() initialize it only like this:

player = MediaPlayer.create(this, R.raw.g2);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top