片段附加到其主机后,每次都不会调用 FragmentOnAttachListener
Posted
技术标签:
【中文标题】片段附加到其主机后,每次都不会调用 FragmentOnAttachListener【英文标题】:FragmentOnAttachListener not called every time after the fragment has been attached to its host 【发布时间】:2021-11-07 11:25:03 【问题描述】:在最近 google 对 android 的更改中,Fragment 1.3.0 版本还添加了一个新的 FragmentOnAttachListener 接口来替换不太灵活的 onAttachFragment 方法。如document 中提到的:
此方法已弃用。的责任 侦听附加的片段已移至 片段管理器。您可以向此活动添加一个侦听器 通过调用 FragmentManager FragmentManager.addFragmentOnAttachListener(FragmentOnAttachListener) 在您的构造函数中获取附加片段时的回调 直接到 Activity 的 FragmentManager。
所以我在 BaseActivity 类的 onCreate() 方法中实现了这个监听器,我的所有活动都从它扩展而来:
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
_binding = getViewBinding()
setContentView(_binding!!.root)
val fm = supportFragmentManager
val listener = FragmentOnAttachListener
fragmentManager, fragment ->
// Respond to the fragment being attached.
fm.addFragmentOnAttachListener(listener)
源文档说明:
监听器,用于接收紧随其后的回调 Fragment.onAttach(上下文)。这可用于执行任何额外的 设置/提供片段之前可能需要的任何依赖项 正在附加的子片段或正在经历的片段 Fragment.onCreate(Bundle)。在附加片段后调用 给它的主人。这会在之后立即调用 Fragment.onAttach(Context) 和之前 Fragment.onAttach(Context) 有 被任何子片段调用。
在 MainActivity 中,我设置了带有导航组件的 ButtomNavigationView。问题是当应用程序第一次运行片段 onAttach() 调用时,此侦听器会在 onAttach() 之前立即收到回调,但在下次手动调用 onAttach() 时,侦听器不会收到回调。为了清楚起见,我的一个片段中有一个按钮,在它的点击事件中,片段被刷新,等等 onAttach() 再次被调用。发生这种情况时,FragmentOnAttachListener 不起作用。谁能帮我为什么听众没有再次收到回调?提前致谢。
【问题讨论】:
【参考方案1】:同样的行为,再次使用Activity.onAttachFragment或Fragment.onAttachFragment
我认为,这是一个错误。我们需要发布一个问题
【讨论】:
以上是关于片段附加到其主机后,每次都不会调用 FragmentOnAttachListener的主要内容,如果未能解决你的问题,请参考以下文章