侧边栏壁纸
博主头像
996worker

祇園精舎の鐘の聲, 諸行無常の響き有り。

  • 累计撰写 134 篇文章
  • 累计创建 40 个标签
  • 累计收到 3 条评论

[Android] Fragment 实现onResume()

996worker
2021-09-26 / 0 评论 / 0 点赞 / 203 阅读 / 679 字
温馨提示:
本文最后更新于 2021-09-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

起因

本来想着Fragment 有生命周期函数 onResume(), 想要用其实现当切换回这个fragment的时候,能够自动刷新里头的数据。然而发现,onResume()其实是绑定在Fragment所在的Activity里,也就是说,在同一个activity里,切换fragment并不能使其能够刷新.

经过

我已经了解到:

Fragment依托于Activity,其内部的OnResume和OnPause方法真正归属于其依托的Activity,在Activity可见性变化的时候,才会调用这两个方法。

由于我使用FragmentTransaction,transaction.add, transaction.hide以及transaction.show实现Fragment切换,那么:可以使用onHiddenChanged(boolean hidden)方法,原理如下:

hide()跳转新的Fragment时,旧的Fragment回调onHiddenChanged(),不会回调onStop()等生命周期方法,而新的Fragment在创建时是不会回调onHiddenChanged(),所以一般会和onresume()方法配合使用。

实例:

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        if (!hidden) {
            // equivalent to onResume
            loadData();
        }
    }

结果

能够在同一个activity里切换Fragment的时候刷新里头的数据了。

0

评论区