所有的Fragment都继承自BaseFragment。
我想给每个片段分别给予按下事件,但是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
因此,ChildFragment重写,当我按下返回按钮时,ChildFragment的backPressCallback
被调用。
但是,当我出去和回来的时候,顺序是不同的。
onResume() ChildFragment
onResume() BaseFragment
因此,用户看到了ChildFragment,但调用了BaseFragment的backPressCallback
。它的行为与我预期的不同。(例如,我想要popBackStack,但关闭了应用程序)
我该如何解决这个问题呢?或者在调用父片段之后是否有调用的方法?
根据this article,BaseFragment必须在ChildFragment之前被调用。但看起来并非如此。
1条答案
按热度按时间66bbxpm51#
将此添加到您片段中。