如何使用navigateUp关闭应用

How to use navigateUp to close the application

我正在使用 Android 导航组件。

在我的 HomeFragment 中,我添加了一个 OnBackPressedCallback

    OnBackPressedCallback callback = new OnBackPressedCallback(true) {
        @Override
        public void handleOnBackPressed() {
            doStuff();
            Navigation.findNavController(view).navigateUp();
        }
    };

    requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);

问题是 navigateUp 没有关闭应用程序。

我尝试弹出堆栈但没有任何变化。

我该怎么办?

谢谢

根据 navigateUp() documentation and popBackStack() documentation,return 和 boolean 值表示:

true if the stack was popped and the user has been navigated to another destination, false otherwise

NavController 仅控制其自己的返回堆栈(即您放入返回堆栈的目的地),不包含或操作 activity 返回堆栈。

如果您只想在按下后退按钮时始终完成 activity,直接调用 requireActivity().finish() 确实是正确的做法。

否则,只有在 popBackStack()/navigateUp() return false 时,您才应该有条件地调用 requireActivity().finish() - 这表明 NavController 返回堆栈上没有其他内容,并且你需要自己处理后台堆栈。