android – Fragment setuserVisibleHint为true但getActivity返回null

我一直在片段的setUserVisibleHint()方法中做一些逻辑.我一直在检查isVisibl@R_404_6440@User是否为true,然后使用getActivity返回活动.这一点运行良好(100%的时间),直到我将支持库更新到最新版本(支持:appcompat-v7:24.2.0).现在getActivity总是返回null.解释此行为的支持库是否有一些更改?
@Override
public void setUserVisibleHint(boolean isVisibl@R_404_6440@User) {
    super.setUserVisibleHint(false);

    if (isVisibl@R_404_6440@User) {
      getActivity() <- null
    }

解决方法

我参加聚会有点晚了但也许这可以帮助别人.我通过在fragment类中创建一个布尔成员来解决这个问题.然后我使用它来确定我是否能够在setUserVisibleHint方法中成功获取活动.如果没有,我在onAttach中执行与活动相关的代码.见下文.
public MyFragment extends Fragment {

    ...

    private boolean doInOnAttach = false;

    @Override
    public void setUserVisibleHint(boolean visible) {
        super.setUserVisibleHint(visible);
        // if the fragment is visible
        if (true == visible) {
            // ... but the activity has not yet been initialized
            doInOnAttach = true;
        } else {
            myAction();
        }
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (true == doInOnAttach) {
            myAction();
            doInOnAttach = false;
        }
    }

    private void myAction() {
        // code to execute here
    }
}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...