片段setuserVisibleHint为true但getActivity返回null

noe*_*oev 6 android fragment android-support-library

我一直在片段的setUserVisibleHint()方法中做一些逻辑.我一直在检查是否isVisibleToUser为真,然后用于getActivity返回活动.这很好(100%的时间),直到我将支持库更新到最新的(support:appcompat-v7:24.2.0).现在getActivity总是返回null.解释此行为的支持库是否有一些更改?

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(false);

    if (isVisibleToUser) {
      getActivity() <- null
    }
Run Code Online (Sandbox Code Playgroud)

Teo*_*irs 2

据 Google 称:“在 Android N 之前,存在一个平台错误,可能会导致 setUserVisibleHint 在提交 FragmentTransaction 之前将片段置于启动状态。由于某些应用程序依赖此行为,因此为声明targetSdkVersion 为 23 或更低。”

因此,有两种选择: 1. 使用 targetSdkVersion < 24 进行重建;2. 根据新情况修改应用程序 => 使用此回调之外的上下文,分别在 onAttach 方法中或稍后在片段生命周期中;