androidX之后,添加了新的返回事件api
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
//该事件是否自行处理 true:该事件不向上传递(即上层activity和fragment不响应返回键事件) , false:该fragment不再响应事件
setEnabled(false);
}
});
如果需要在fragment里使用该api,需要在onCreateView方法之后调用
//控件fragment是否响应反回键事件
public class MyFragment extends Fragment {
private final OnBackPressedCallback backPressed = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
//监听到回车事件
}
};
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
binding.btn1.setOnClickListener(v -> {
//设置该fragment响应回车事件
backPressed.setEnabled(true);
});
binding.btn2.setOnClickListener(v -> {
//该fragment不响应回车事件
backPressed.setEnabled(false);
});
//添加回车事件监听
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), backPressed);
}
}