我有一个带有多个片段的ViewPager。在一个Fragment中,我播放音频。当我滑动到另一个片段时,我想停止音频播放。如何检测到另一个片段现在在ViewPager中可见?

我尝试覆盖onStoponHiddenChanged。没有成功必须有一些“您不再活跃”的方法可以覆盖。不?

最佳答案

我做了一些挖掘,结果发现ViewPager会同时调用setUserVisibleHintsetMenuVisibility。由于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
        }
    }
}

10-06 14:02