当用户按下切换开关时,我需要重新创建一个片段。我正在使用此功能:
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。
答案 0 :(得分:3)
onCreate()
仅在创建片段时才会调用。分离和重新连接不会创建新的片段,但是如果您的活动被破坏并重新创建(例如,在轮换等配置更改或应用程序的进程被终止的情况下),onCreate()
也将被调用。
答案 1 :(得分:1)
最近有一次Google谈话提到片段的生命周期将会改变。如果我没记错的话,他们说他们实际上将结合create和createView。但是,只要您不选择使用新的片段,那么您正确的做法是onCreate
仅被调用一次。在片段被实例化时(如init)被调用,但是除非片段被完全销毁并重新创建,否则它将不会再次被调用。