我有一个包含多个片段的ViewPager
。在一个Fragment
我播放音频。当我滑动到另一个片段时,我想停止音频播放。如何检测到另一个片段现在在ViewPager
?
我已尝试覆盖onStop
和onHiddenChanged
。没有成功。必须有一些“你不再活跃”的方法来覆盖。否?
答案 0 :(得分:137)
我做了一些挖掘,结果发现ViewPager会同时调用:setUserVisibleHint
和setMenuVisibility
。我会覆盖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
}
}
}
状态:
向系统提供有关此片段的UI当前是否对用户可见的提示。此提示默认为true,并且在片段实例状态保存和还原期间保持不变。 应用程序可能将此设置为false,以指示片段的UI滚动超出可见性,或者不会直接对用户可见。系统可以使用它来确定片段生命周期更新或加载器排序行为等操作的优先级。
尝试将此代码放入您的片段中:
{{1}}