From dda2200a4bde588aa2bd29f64bf1288e644cbf9a Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Tue, 16 Apr 2024 17:32:03 +0530 Subject: [PATCH] Fixed: Play Store reported a crash error when closing the tabs. * This error was occurring due to the user frequently clicking the close icon of the same tab, in this situation first click closes the tab, and the second immediate click again triggers the `closeTab` function but recyclerView does not have the valid view for this position because it is in removing process so this makes this view invalid and recyclerView returns the `-1` index for invalid views. So this was the reason for this issue, to address this issue we have added a check in our `closeTab` method if the incoming index is `-1` then it will not execute the further code. --- .../org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt index 5183cacd4..a848795b6 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt @@ -1198,6 +1198,10 @@ abstract class CoreReaderFragment : if (currentTtsWebViewIndex == index) { onReadAloudStop() } + // Check if the index is valid; RecyclerView gives the index -1 for already removed views. + // Address those issues when the user frequently clicks on the close icon of the same tab. + // See https://github.com/kiwix/kiwix-android/issues/3790 for more details. + if (index == RecyclerView.NO_POSITION) return tempZimFileForUndo = zimReaderContainer?.zimFile tempWebViewForUndo = webViewList[index] webViewList.removeAt(index)