我定制了后退按钮。当我点击它时,应用程序在一秒钟后崩溃。 这是代码:
private var mBackPressed: Long = 0
private val timeInterval = 2000
private fun configBackPress() {
requireActivity().onBackPressedDispatcher.addCallback(this, true) {
when {
mBackPressed + timeInterval > System.currentTimeMillis() -> {
requireActivity().onBackPressedDispatcher.onBackPressed()
}
else -> {
Snackbar.make(
requireActivity().findViewById(android.R.id.content),
getString(R.string.press_once_again_back_button_to_exit),
Snackbar.LENGTH_SHORT
)
.setAnchorView(viewBinding.vSnackBarHelper)
.show()
mBackPressed = System.currentTimeMillis()
}
}
}
}
当用户单击后退按钮两次时,后退应该可以工作。
更换
requireActivity().onBackPressedDispatcher.onBackPressed()
仅
finish()
目前,您在
onBackPressedDispatcher
中设置的 Fragment
正在调用 (onBackPressed
d) require
中的 Activity
,它首先会尝试将此事件传播到自己的子级 - Fragment
。所以,再次,onBackPressedDispatcher
将被触发,再次调用Activity
的方法,这是一个无限循环
编辑:
isEnabled = false
是一个更好的方法,只是想给你留下一些案例描述