jjzjj

android - fragment setuserVisibleHint true 但 getActivity 返回 null

coder 2023-11-30 原文

我一直在 fragment 的 setUserVisibleHint() 方法内部做一些逻辑。我一直在检查 isVisibleToUser 是否为真,然后使用 getActivity 返回 Activity 。在我将支持库更新到最新版本 (support:appcompat-v7:24.2.0) 之前,它运行良好(100% 的时间)。现在 getActivity 总是返回 null。是否对解释此行为的支持库进行了一些更改?

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

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

最佳答案

我参加派对有点晚了,但也许这可以帮助别人。我通过在 fragment 类中创建一个 bool 成员来解决这个问题。然后我用它来确定我是否能够成功地获得 setUserVisibleHint 方法中的 Activity 。如果没有,我执行onAttach中的activity相关代码。见下文。

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 - fragment setuserVisibleHint true 但 getActivity 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39527867/

有关android - fragment setuserVisibleHint true 但 getActivity 返回 null的更多相关文章

随机推荐