我想提供自定义返回导航
我在Fragment
中的onCreate
上有这样的代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
setHasOptionsMenu(true)
requireActivity().onBackPressedDispatcher.addCallback(
this,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Log.e("onCreate:", "back pressed invoked")
}
}
)
Log.e("onCreate: ", "Run")
}
片段声明:
class InsertFragment : Fragment() {
}
i使用导航组件,我的库版本是:
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment-ktx:$nav_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
当我点击后退按钮,我没有输出Log
,我错过了什么?
2条答案
按热度按时间vc6uscn91#
onBackPressedDispatcher
用于手柄设备返回按钮。因此,
Log
仅在按下设备后退按钮时运行qncylg1j2#
我不知道
如果你使用导航组件,应该看看这个
不要这样做:
请改为执行以下操作:
为什么我们在
callback
中使用viewLifecycleOwner
,因为在导航到下一个片段后,backpress函数将被清除。如果你不使用它,整个容器活动backpresss函数将被触发,并影响到该容器活动中的其他片段。