我正在使用Android导航组件。
在我的HomeFragment内,我要添加一个OnBackPressedCallback
OnBackPressedCallback callback = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
doStuff();
Navigation.findNavController(view).navigateUp();
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
问题是navigateUp
没有关闭应用程序。
我试图弹出堆栈,但没有任何变化。
我该怎么办?
谢谢
答案 0 :(得分:2)
根据navigateUp()
documentation和popBackStack()
documentation,都返回一个boolean
值,指示:
)
true
(如果已弹出堆栈,并且用户已导航到另一个目的地,否则为false
NavController仅控制自己的后堆栈(即您放置在后堆栈上的目的地),并且不包含活动后堆栈或在活动后堆栈上进行操作。
如果您只想在按下后退按钮时总是完成活动,那么直接调用requireActivity().finish()
确实是正确的选择。
否则,只有在requireActivity().finish()
/ popBackStack()
返回false的情况下,才应有条件地调用navigateUp()
-这表明NavController堆栈上没有其他内容,您需要处理后面的内容堆放自己。