Ich habe Viewpager, die Fragmente enthält, jedes Fragment hat MediaPlayer-Objekt, das heißt jedes Fragment hat Audio an es angehängt. Meine Anforderung ist, wenn ich den viewpager wische, sollte der aktuelle Fragment-Mediaplayer stoppen und der nächste Fragment-Mediaplayer abgespielt werden. Wenn ich den viewpager rückwärts wische, sollte der aktuelle Fragment Media Player stoppen und der vorherige Fragment Media Player sollte starten. Es ist nicht notwendig, dass jedes Fragment mit einem Audio verbunden ist, deshalb hat jedes Fragment ein eigenes Media-Player-Objekt und ich habe den Check auf Audio gestellt, um damit umgehen zu können. Bisher habe ich unten Code versuchtUmgang mit MediaPlayer-Objekt in einem Fragment innerhalb der Ansicht Pager
In jedem Fragment ist mit einer Sichtprüfung und das Audio entsprechend spielen,
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
if (mPlayer != null) {
mPlayer.start();
}
} else {
if (mPlayer != null && mPlayer.isPlaying()) {
mPlayer.pause();
mPlayer.seekTo(0);
}
}
}
Wenn ich loslassen Media Player Objekt in OnStop von Fragment dann Audio aufhören zu arbeiten, wenn ich wieder kommt zu demselben Fragment.
@Override
public void onStop() {
if (mPlayer != null && mPlayer.isPlaying()) {
mPlayer.stop();
mPlayer.reset(); // Might not be necessary, since release() is called right after, but it doesn't seem to hurt/cause issues
mPlayer.release();
mPlayer = null;
}
super.onStop();
}
Wie löst man das? Ich kann nicht Media Player innerhalb des Fragments eines Viewpager steuern.