【发布时间】:2021-06-07 19:43:41
【问题描述】:
当尝试使用dialog fragment 的后退按钮时
我很好奇使用onBackPressed()(或onBackPressedCallBack)和onCancel()之间的区别。
我尝试在dialog fragment中使用onBackPressedCallback()和OnBackPressedDispatcher()定义back key的数据转发事件,但是没有成功。
最后,我使用onCancel()传递了数据。
为什么onBackPressed() 的后退键不起作用?
更新
public class WritingCommentDialogFragment extends DialogFragment {
OnBackPressedCallback callback;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return view;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.setCanceledOnTouchOutside(false);
return dialog;
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
callback = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
Toast.makeText(getContext(), "TEST", Toast.LENGTH_SHORT).show();
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
}
}
【问题讨论】:
标签: java android kotlin android-dialogfragment onbackpressed