@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (getUserVisibleHint()) {
        isVisible = true;
        onVisible();
    } else {
        isVisible = false;
        onInVisible();
    }
}


我发现这部分代码没有执行。

最佳答案

他们只是在Fragments中更改了API。

如果使用此方法限制片段生命周期:


  现在,您可以通过调用设置片段的最大生命周期状态
  FragmentTransaction上的setMaxLifecycle()。这取代了现在
  不建议使用setUserVisibleHint()。


资料来源:https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0-alpha07

如果需要此方法,因为您尝试检测当前在ViewPager中可见的片段。现在,您可以只使用onResumeonPause方法,但是在此之前,您应该更改FragmentPagerAdapter构造函数中的默认行为。

像这样:

FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)

09-27 12:48