首页 > 解决方案 > 刷新片段不调用 onCreate()。这是正常的?

问题描述

当用户按下切换按钮时,我需要重新创建一个片段。我正在使用这个功能:

public void refreshFragment(){
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    if (Build.VERSION.SDK_INT >= 26) {
        ft.setReorderingAllowed(false);
    }
    ft.detach(this).attach(this).commit();
}

它工作正常,但是在调用它时,不会调用 onCreate,这是重新创建后调用的方法序列:

onCreateView()
onViewCreated()
onResume()

这是第一次创建它时调用的方法序列:

onCreate()
onCreateView()
onViewCreated()
onResume()

显然,在使用该函数刷新片段时,永远不会再次调用 onCreate。这会永远如此吗?或者在某些情况下可以改变?我问它是因为它对我来说非常完美,只在第一次调用 onCreate 时,因为这样我就可以放在那里我只想执行一个项目而不是在刷新时执行的代码。但我需要知道它是否安全或者刷新时可以调用 onCreate 。

标签: androidandroid-fragmentsfragmentfragment-lifecycle

解决方案


onCreate()只有当你的片段被创建时才会被调用。分离和重新附加不会创建新的片段,但onCreate()如果您的活动被销毁和重新创建(例如,在旋转等配置更改或如果您的应用程序的进程被终止),也会调用。


推荐阅读