Android 导航 - 确认用户导航

Android Navigation - confirm user navigation

我使用 AndroidX 导航组件在我的应用程序内进行片段导航。我有一个场景,当我需要询问用户他是否真的想离开页面或留下来时。我可以轻松地进行进一步导航 - 只需显示 AlertDialog 并在正面导航。但是,我在阻止用户使用后退按钮弹出或使用抽屉导航到其他地方时遇到了实际问题。也找不到像导航监听器这样有用的东西。如何在 Navigation Fragment 中捕获导航尝试?

正如这个 doc 所说,您可以在 onBackPressedDispatcher 上添加回调并修改返回按下的行为:

    val callback = onBackPressedDispatcher.addCallback(this) {
        AlertDialog.Builder(this@Activity)
            .setMessage("Are you sure?")
            .setPositiveButton(android.R.string.ok, DialogInterface.OnClickListener { _, _ ->
                handleOnBackPressed()
            })
            .setNegativeButton(android.R.string.cancel, null)
            .create()
            .show()
    }