0

MediaPlayer のメソッドに対して null ポインター例外が発生し続けます。play 関数のコードと play 関数の初期化を別のメソッドに移動し、onClick リスナー内からそのメソッドを呼び出すことで、play 関数を機能させることができました。

ただし、アプリの一時停止機能のヌル ポインター例外が引き続き発生します。メディア プレーヤーの一時停止メソッドを使用しています。一時停止を機能させるにはどうすればよいですか? 問題は、コードの構造とその構成のどこかにあると思います。

メディア プレーヤーの初期化をコード内の別の場所に移動してみました。そして、何も機能していないようです。何か案は?

// 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 プレーヤーのグローバル変数を作成する必要があります。player は pauseSong() メソッドでは表示されないため、nullPointerException が発生します。メイン クラスで MediaPlayer プレーヤーを作成し、onPlaySong() で次のように初期化します。

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