als*_*ora 3 android android-architecture-navigation androidx
我正在使用 Android 导航组件。
在我的 HomeFragment 中,我添加了一个 OnBackPressedCallback
OnBackPressedCallback callback = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
doStuff();
Navigation.findNavController(view).navigateUp();
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
Run Code Online (Sandbox Code Playgroud)
问题是navigateUp没有关闭应用程序。
我试图弹出堆栈但没有任何变化。
我该怎么办?
谢谢
ian*_*ake 10
根据navigateUp()文档和popBackStack()文档,两者都返回一个boolean值,表明:
true如果堆栈被弹出并且用户已被导航到另一个目的地,false否则
NavController 只控制它自己的返回堆栈(即,您放置在返回堆栈上的目的地)并且不包含或操作活动返回堆栈。
如果您只想在按下后退按钮时始终完成您的活动,那么直接调用requireActivity().finish()确实是正确的做法。
否则,您应该requireActivity().finish()仅在popBackStack()/navigateUp()返回 false 时有条件地调用- 这表明 NavController 后退堆栈上没有其他内容,您需要自己处理后退堆栈。
| 归档时间: |
|
| 查看次数: |
2813 次 |
| 最近记录: |