在使用Navigation
库的时候, 系统已经为我们做好了返回键的处理, 默认情况下, 点击返回键会自动执行popBackStack()
但是如果在返回冲突的时候, 就会出问题, 比如首页是ViewPager, 子页面是Fragemnt, 然后从Fragmentnavigate
到下一个页面的时候, 点击返回键, 系统执行的操作会是外层Activity的, 会直接推出App.
这种情况下, 需要重写返回键, 以便于手动退回到上一个Fragment
只需要在当前的Fragment里面的onCreate()
方法里面加入如下方法就可以了
// This callback will only be called when MyFragment is at least Started.
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
@Override
public void handleOnBackPressed() {
// Handle the back button event
NavHostFragment.findNavController(SysMessageFragment.this)
.popBackStack();
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);