android - 刷新片段不调用 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 。
解决方案
onCreate()
只有当你的片段被创建时才会被调用。分离和重新附加不会创建新的片段,但onCreate()
如果您的活动被销毁和重新创建(例如,在旋转等配置更改或如果您的应用程序的进程被终止),也会调用。
推荐阅读
- reactjs - 由于 CSSReset - Chakra-ui,Markdown 无法正确显示
- c++ - 如何在 C++ 中等待线程退休?
- node.js - 如何从 Nest.js 连接到 Heroku Postgres?
- wso2 - WSO2 APIM 代币兑换
- java - Java:nextDouble 从用户消息中获取数字不会被打印
- reactjs - 带有 if/else 语句的多个事件 onChange
- java - 我应该在春季单例豆中使用静态吗
- docker - Kubernetes [错误:没有类型的“CertificateSigningRequest”]
- python - 如何获取python多维np数组中所有最大值的索引
- typescript - 在Typescript中提取嵌套在接口中的函数的参数