我有一个带有多个片段的ViewPager
。在一个Fragment
中,我播放音频。当我滑动到另一个片段时,我想停止音频播放。如何检测到另一个片段现在在ViewPager
中可见?
我尝试覆盖onStop
和onHiddenChanged
。没有成功必须有一些“您不再活跃”的方法可以覆盖。不?
最佳答案
我做了一些挖掘,结果发现ViewPager会同时调用setUserVisibleHint
和setMenuVisibility
。由于documentation for setUserVisibleHint声明,我将覆盖setUserVisibleHint
:
尝试将这段代码放在片段中:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
// Make sure that we are currently visible
if (this.isVisible()) {
// If we are becoming invisible, then...
if (!isVisibleToUser) {
Log.d("MyFragment", "Not visible anymore. Stopping audio.");
// TODO stop audio playback
}
}
}