父母片段和子女碎片之间的生命周期
所有碎片都从底层继承。
我想分别将新闻事件退还给每个片段。但是BaseFragment有类似的默认背面新闻事件。
override fun onResume() {
super.onResume()
logd("onResume() BaseFragment")
requireActivity().onBackPressedDispatcher.addCallback(this, backPressCallback)
}
孩子的片段
override fun onResume() {
super.onResume()
logd("onResume() ChildFragment")
requireActivity().onBackPressedDispatcher.addCallback(this, backPressCallback)
}
还将打印
onResume() BaseFragment
onResume() ChildFragment
,因此,frag fragment覆盖了,当我按下返回按钮时,调用了Child Fragment的BackpressCallback
。
但是,当我出去回来时,订单是不同的。
onResume() ChildFragment
onResume() BaseFragment
因此,用户会看到儿童剥落,但底层范围的backpresscallback
被调用。它的行为与我期望的不同。 (例如。我想要PopBackStack,但要关闭应用程序)
如何解决此问题?还是在调用父片后有任何方法?
根据本文,必须在儿童范围前调用基础范围。但这似乎并非如此。
All the Fragment inherits from BaseFragment.
And I'd like to give back press event respectively to each fragment. But BaseFragment has default back press event like this.
override fun onResume() {
super.onResume()
logd("onResume() BaseFragment")
requireActivity().onBackPressedDispatcher.addCallback(this, backPressCallback)
}
And also the child fragments have
override fun onResume() {
super.onResume()
logd("onResume() ChildFragment")
requireActivity().onBackPressedDispatcher.addCallback(this, backPressCallback)
}
It will print,
onResume() BaseFragment
onResume() ChildFragment
So, the ChildFragment override and when I press back button, ChildFragment's backPressCallback
is called.
However, when I go out and come back, the order is different.
onResume() ChildFragment
onResume() BaseFragment
So, the user sees ChildFragment but BaseFragment's backPressCallback
is called. And it behaves different from what I expected. (ex. I want popBackStack but close the app)
How can I solve this problem? Or is there any method that called after the parent fragment is called?
According to this article, BaseFragment must be called before ChildFragment. But it doesn't seem so.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将其添加到您的片段中。
add this to your fragment.