如何使用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 返回堆栈上没有其他内容,并且你需要自己处理后台堆栈。
我正在使用 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 返回堆栈上没有其他内容,并且你需要自己处理后台堆栈。