l33*_*33t 65 android android-fragments android-viewpager
我有一个ViewPager多个片段.在一个Fragment我播放音频.当我滑动到另一个片段时,我想停止音频播放.如何检测到另一个片段现在可见ViewPager?
我试着重写onStop和onHiddenChanged.没有成功.必须有一些"你不再活跃"的方法来覆盖.没有?
lou*_*uie 138
我做了一些挖掘,事实证明ViewPager将同时调用:setUserVisibleHint和setMenuVisibility.我会覆盖setUserVisibleHintsetUserVisibleHint的文档:
向系统提供有关此片段的UI当前是否对用户可见的提示.此提示默认为true,并且在片段实例状态保存和还原期间保持不变.应用程序可能将此设置为false,以指示片段的UI滚动超出可见性,或者不会直接对用户可见.系统可以使用它来确定诸如片段生命周期更新或加载器排序行为之类的操作的优先级.
尝试将此代码放入您的片段中:
@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
}
}
}
Run Code Online (Sandbox Code Playgroud)