From 10045494b878193445d64b2ffe845d82206802e8 Mon Sep 17 00:00:00 2001 From: tarsin Date: Wed, 12 Jul 2023 16:11:28 +0800 Subject: [PATCH] Fix GalleryCommentsScene binding leak --- .../ehviewer/ui/scene/GalleryCommentsScene.kt | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt index 5fd3118e0..44b70b16b 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt @@ -99,7 +99,13 @@ import kotlin.math.hypot class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefreshListener { private var _binding: SceneGalleryCommentsBinding? = null private val binding get() = _binding!! - private val mCallback = EditPanelOnBackPressedCallback() + private val callback = object : OnBackPressedCallback(false) { + override fun handleOnBackPressed() { + if (!mInAnimation && binding.editPanel.visibility == View.VISIBLE) { + hideEditPanel(true) + } + } + } private var mGalleryDetail: GalleryDetail? = null private var mAdapter: CommentAdapter? = null private var mViewTransition: ViewTransition? = null @@ -111,7 +117,7 @@ class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefresh private var mRefreshingComments = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - requireActivity().onBackPressedDispatcher.addCallback(mCallback) + requireActivity().onBackPressedDispatcher.addCallback(callback) if (savedInstanceState == null) { onInit() } else { @@ -283,12 +289,13 @@ class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefresh override fun onDestroyView() { super.onDestroyView() - mCallback.remove() + callback.remove() binding.recyclerView.stopScroll() removeAboveSnackView(binding.editPanel) removeAboveSnackView(binding.fabLayout) mAdapter = null mViewTransition = null + _binding = null } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -542,7 +549,7 @@ class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefresh } private fun showEditPanel(animation: Boolean) { - mCallback.isEnabled = true + callback.isEnabled = true if (animation) { showEditPanelWithAnimation() } else { @@ -596,7 +603,7 @@ class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefresh } private fun hideEditPanel(animation: Boolean) { - mCallback.isEnabled = false + callback.isEnabled = false hideSoftInput() if (animation) { hideEditPanelWithAnimation() @@ -872,14 +879,6 @@ class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefresh } } - internal inner class EditPanelOnBackPressedCallback : OnBackPressedCallback(false) { - override fun handleOnBackPressed() { - if (!mInAnimation && binding.editPanel.visibility == View.VISIBLE) { - hideEditPanel(true) - } - } - } - companion object { val TAG: String = GalleryCommentsScene::class.java.simpleName const val KEY_API_UID = "api_uid"