J'ai creusé un peu et il s'avère que ViewPager appellera à la fois: setUserVisibleHint
et setMenuVisibility
. Je remplacerais setUserVisibleHint
puisque la documentation pour setUserVisibleHint indique :
Définissez un indice au système pour indiquer si l'interface utilisateur de ce fragment est actuellement visible pour l'utilisateur. Cet indice est par défaut vrai et est permanent à travers l'état de sauvegarde et de restauration de l'instance du fragment. Une application peut définir ceci sur false pour indiquer que l'interface utilisateur du fragment est déroulée hors visibilité ou n'est pas directement visible pour l'utilisateur. Ceci peut être utilisé par le système pour prioriser des opérations telles que les mises à jour du cycle de vie des fragments ou le comportement de l'ordonnancement des chargeurs.
Essayez de mettre ce code dans votre fragment :
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
// Assurez-vous que nous sommes actuellement visibles
if (this.isVisible()) {
// Si nous devenons invisibles, alors...
if (!isVisibleToUser) {
Log.d("MyFragment", "Plus visible. Arrêt de la lecture audio.");
// TODO arrêter la lecture audio
}
}
}