片段 setuserVisibleHint true 但 getActivity 返回 null

2023-12-19

我一直在片段内部做一些逻辑setUserVisibleHint()方法。我一直在检查是否isVisibleToUser为 true 然后使用getActivity返回活动。在我将支持库更新到最新版本之前,这一切都运行良好(100%的时间)(support:appcompat-v7:24.2.0). Now getActivity总是返回 null。支持库是否有一些更改可以解释这种行为?

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

    if (isVisibleToUser) {
      getActivity() <- null
    }

我参加聚会有点晚了,但也许这可以帮助别人。我通过在片段类中创建一个布尔成员解决了这个问题。然后我用它来确定我是否能够成功获取 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
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

片段 setuserVisibleHint true 但 getActivity 返回 null 的相关文章

随机推荐