From 84489bf61b5bb4fb569b217594382f5e16e7a437 Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 2 Jan 2023 10:16:20 +0800 Subject: [PATCH] Handle GalleryCommentsScene EditPanel OnBackPressedCallback --- .../ui/scene/GalleryCommentsScene.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java index f788efbcf..6fbfa8cc4 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java @@ -44,6 +44,7 @@ import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; +import androidx.activity.OnBackPressedCallback; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; @@ -133,10 +134,12 @@ public final class GalleryCommentsScene extends ToolbarScene private boolean mShowAllComments = false; private boolean mRefreshingComments = false; + private final EditPanelOnBackPressedCallback mCallback = new EditPanelOnBackPressedCallback(); + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + requireActivity().getOnBackPressedDispatcher().addCallback(mCallback); if (savedInstanceState == null) { onInit(); } else { @@ -234,6 +237,7 @@ public final class GalleryCommentsScene extends ToolbarScene @Override public void onDestroyView() { super.onDestroyView(); + mCallback.remove(); if (null != mRecyclerView) { mRecyclerView.stopScroll(); @@ -526,6 +530,7 @@ public final class GalleryCommentsScene extends ToolbarScene } private void showEditPanel(boolean animation) { + mCallback.setEnabled(true); if (animation) { showEditPanelWithAnimation(); } else { @@ -585,6 +590,7 @@ public final class GalleryCommentsScene extends ToolbarScene } private void hideEditPanel(boolean animation) { + mCallback.setEnabled(false); hideSoftInput(); if (animation) { hideEditPanelWithAnimation(); @@ -644,18 +650,6 @@ public final class GalleryCommentsScene extends ToolbarScene } } - @Override - public void onBackPressed() { - if (mInAnimation) { - return; - } - if (null != mEditPanel && mEditPanel.getVisibility() == View.VISIBLE) { - hideEditPanel(true); - } else { - finish(); - } - } - private void onRefreshGallerySuccess(GalleryCommentList result) { if (mGalleryDetail == null || mAdapter == null) { return; @@ -1006,4 +1000,17 @@ public final class GalleryCommentsScene extends ToolbarScene } } } + + class EditPanelOnBackPressedCallback extends OnBackPressedCallback { + public EditPanelOnBackPressedCallback() { + super(false); + } + + @Override + public void handleOnBackPressed() { + if (!mInAnimation && null != mEditPanel && mEditPanel.getVisibility() == View.VISIBLE) { + hideEditPanel(true); + } + } + } }