检测片段内的ViewPager选项卡更改

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

我试过重写onStoponHiddenChanged 。 没有成功。 必须有一些“你不活跃了”的方法来覆盖。 没有?

我做了一些挖掘,事实certificate,ViewPager将同时调用: setUserVisibleHintsetMenuVisibility 。 我会重写setUserVisibleHint因为setUserVisibleHint的文档状态如下:

为系统设置提示,告知用户当前是否可以看到这个片段的用户界面。 此提示默认为true,并且在片段实例状态保存和恢复中保持不变。 应用程序可能会将其设置为false,以指示片段的UI已滚动出可见性,否则对用户不可见。 系统可以使用这个优先级来确定操作,例如片段生命周期更新或装载器sorting行为。

尝试把这段代码放在你的片段中:

 @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 } } }