起因
本来想着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的时候刷新里头的数据了。
