Если у вас нет доступа к объекту игрока за пределами ваших фрагментов, вы можете попробовать этот метод.
Текущий конструктор HomeTabsAdapter
, расширяющий FragmentStatePagerAdapter
, который у вас есть, устарел.
Поэтому я бы посоветовал вам переключить ваш конструктор на следующий, как показано ниже:
//Not sure why you need to have activity in you constructor but since currently does
public HomeTabsAdapter(@NonNull FragmentManager fm, int behavior, MainActivity activity) {
super(fm, behavior);
this.activity = activity;
}
Поэтому вам также придется изменить инициирование адаптера в вашей деятельности на что-то вроде:
adapter = new HomeTabsAdapter(getSupportFragmentManager(), FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
Если вы используете вышеупомянутый флаг поведения, при изменении страницы будет вызываться метод onPause
для этого фрагмента и при возврате к нему будет вызываться onResume
фрагмента.
Так что вам нужно переопределить эти методы в ваших фрагментах, например:
@Override
public void onPause() {
super.onPause();
if(mPlayer.isPlaying())
mPlayer.pause();
}
Если вы не хотите sh удалить устаревший конструктор, у меня нет идеального решения, но вы можете проверить, попробуйте проверить, если страница видимый с помощью if(getUserVisibleHint())
и пауза для false. но эта проверка будет необходима через регулярные промежутки времени, возможно, с помощью обработчика.
Проверьте, не помогло ли это.