前言
我在使用BottomNavigationView组件时,发现我在别的fragment界面点击返回键跳转回主页时,主页的数据都消失不见了。我以为是返回主页时没有重新创建fragment页面的问题,但经过验证确实是调用了onCreate(),却没有数据。于是我想了另一个办法,捕获其他fragment页面的返回键,重新导航到主页面。
在Activity中我们可以直接重写onBackPressed()方法来实现捕获返回键,但在fragment中却没有这个方法,在查阅了相关资料后我找到了可以用官方的回调方法来实现监听返回键。
官方API:OnBackPressedDispatcher | Android Developers
实现
在自己的fragment中重写onAttach()方法
public class FormEntryFragment extends Fragment {
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
OnBackPressedCallback callback = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
//按下返回键时想要实现的方法
}
};
//把回调函数添加到Activity中
requireActivity().getOnBackPressedDispatcher().addCallback(
this, // LifecycleOwner
callback);
}
}