我在片段中
onBackPressedDispatcher?.onBackPressed()
的实现上有点卡住了
我里面有一个 Activity 和 Fragment
我在片段中有一个流程 -> 当用户单击后退按钮时,我需要显示一个对话框,询问“您确定吗?”一旦用户单击“是”,我就必须返回。
因此,为了做到这一点,我在我的片段中做了 ->
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
showAlertDialog(
message = getString(R.string.myText),
dialogCallback = object : AlertDialogInterface {
override fun onAlertDialogButtonClicked(alertDialog: AlertDialog?) {}
override fun onPositiveButtonClicked(alertDialog: AlertDialog?) {
isEnabled = false
alertDialog?.dismiss()
activity?.onBackPressedDispatcher?.onBackPressed()
}
override fun onNegativeButtonClicked(alertDialog: AlertDialog?) {
alertDialog?.dismiss()
}
}
)
}
}
activity?.onBackPressedDispatcher?.addCallback(
this,
callback
)
}
...
因此,我假设一旦用户在对话框上单击“是”,就会触发此事件
onPositiveButtonClicked
,并且为了进一步传递此事件,我调用此行 -> activity?.onBackPressedDispatcher?.onBackPressed()
,但它会转一个圈。
我在这里缺少什么?
最后是这样解决的:
override fun onPositiveButtonClicked(alertDialog: AlertDialog?) {
isEnabled = false
alertDialog?.dismiss()
callback.remove()
activity?.onBackPressedDispatcher?.onBackPressed()
}
一旦不再需要回调,可以将其删除