检测片段内的ViewPager选项卡更改
我有一个ViewPager
与多个片段。 在一个Fragment
我播放audio。 当我滑动到另一个片段时,我想停止audio播放。 如何检测另一个片段现在在ViewPager
可见?
我试过重写onStop
和onHiddenChanged
。 没有成功。 必须有一些“你不活跃了”的方法来覆盖。 没有?
我做了一些挖掘,事实certificate,ViewPager将同时调用: setUserVisibleHint
和setMenuVisibility
。 我会重写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 } } }