From b646cc00a39f58969dd8adbfcc866de8d865da99 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 19 Mar 2022 16:34:48 +0200 Subject: [PATCH] Fix redundant fragments in DetailsActivity --- app/build.gradle | 4 ++-- .../java/org/koitharu/kotatsu/KotatsuApp.kt | 1 + .../kotatsu/details/ui/ChaptersFragment.kt | 5 +---- .../kotatsu/details/ui/DetailsActivity.kt | 19 +++++++++++++++++++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 22ec6381a..98082c6d4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -97,8 +97,8 @@ dependencies { implementation 'com.squareup.okhttp3:okhttp:4.9.3' implementation 'com.squareup.okio:okio:3.0.0' - implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl:4.3.1' - implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding:4.3.1' + implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl:4.3.2' + implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding:4.3.2' implementation 'io.insert-koin:koin-android:3.1.5' implementation 'io.coil-kt:coil-base:1.4.0' diff --git a/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt b/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt index 0111f7255..7e755507a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt +++ b/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt @@ -93,6 +93,7 @@ class KotatsuApp : Application() { .detectWrongFragmentContainer() .detectRetainInstanceUsage() .detectSetUserVisibleHint() + .detectFragmentTagUsage() .build() } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/ChaptersFragment.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/ChaptersFragment.kt index 9a05baf54..d2812d4a6 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/ChaptersFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/ChaptersFragment.kt @@ -75,10 +75,7 @@ class ChaptersFragment : BaseFragment(), override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { super.onCreateOptionsMenu(menu, inflater) - // workaround: duplication after screen rotation - if (menu.findItem(R.id.action_reversed) == null) { - inflater.inflate(R.menu.opt_chapters, menu) - } + inflater.inflate(R.menu.opt_chapters, menu) } override fun onPrepareOptionsMenu(menu: Menu) { diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt index b6ecb17ea..ee62e7926 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt @@ -18,6 +18,7 @@ import androidx.core.net.toFile import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import androidx.core.view.updatePadding +import androidx.fragment.app.commit import androidx.lifecycle.lifecycleScope import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.tabs.TabLayout @@ -63,6 +64,7 @@ class DetailsActivity : BaseActivity(), TabLayoutMediato pager.adapter = MangaDetailsAdapter(this) TabLayoutMediator(checkNotNull(binding.tabs), pager, this).attach() } + gcFragments() binding.spinnerBranches?.let(::initSpinner) viewModel.manga.observe(this, ::onMangaUpdated) @@ -293,6 +295,23 @@ class DetailsActivity : BaseActivity(), TabLayoutMediato } } + private fun gcFragments() { + val mustHaveId = binding.pager == null + val fm = supportFragmentManager + val fragmentsToRemove = fm.fragments.filter { f -> + (f.id == 0) == mustHaveId + } + if (fragmentsToRemove.isEmpty()) { + return + } + fm.commit { + setReorderingAllowed(true) + for (f in fragmentsToRemove) { + remove(f) + } + } + } + companion object { fun newIntent(context: Context, manga: Manga): Intent {