From da1696a0592d403ba1552e4a9628e1dbaf9feefe Mon Sep 17 00:00:00 2001 From: Zakhar Timoshenko Date: Fri, 22 Jul 2022 18:18:40 +0300 Subject: [PATCH] Don't recreate the same fragment --- .../org/koitharu/kotatsu/main/ui/ExitCallback.kt | 3 ++- .../org/koitharu/kotatsu/main/ui/MainActivity.kt | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/ExitCallback.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/ExitCallback.kt index 9d6fcfd81..ffbafc22b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/ExitCallback.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/ExitCallback.kt @@ -38,6 +38,7 @@ class ExitCallback( private suspend fun resetExitConfirmation() { isEnabled = false val snackbar = Snackbar.make(snackbarHost, R.string.confirm_exit, Snackbar.LENGTH_INDEFINITE) + snackbar.anchorView = (activity as? BottomNavOwner)?.bottomNav snackbar.show() delay(2000) snackbar.dismiss() @@ -51,4 +52,4 @@ class ExitCallback( .onEach { isEnabled = it } .launchIn(activity.lifecycleScope) } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt index d27e388a3..540c4a0b1 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -17,10 +17,8 @@ import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.commit import androidx.lifecycle.lifecycleScope import androidx.transition.TransitionManager -import com.google.android.material.R as materialR import com.google.android.material.appbar.AppBarLayout import com.google.android.material.appbar.AppBarLayout.LayoutParams.* -import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.navigation.NavigationBarView import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.Dispatchers @@ -30,6 +28,7 @@ import org.koin.android.ext.android.get import org.koin.androidx.viewmodel.ext.android.viewModel import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.ui.BaseActivity +import org.koitharu.kotatsu.base.ui.util.RecyclerViewOwner import org.koitharu.kotatsu.base.ui.widgets.KotatsuBottomNavigationView import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.databinding.ActivityMainBinding @@ -54,6 +53,7 @@ import org.koitharu.kotatsu.tracker.ui.FeedFragment import org.koitharu.kotatsu.tracker.work.TrackWorker import org.koitharu.kotatsu.utils.VoiceInputContract import org.koitharu.kotatsu.utils.ext.* +import com.google.android.material.R as materialR private const val TAG_PRIMARY = "primary" private const val TAG_SEARCH = "search" @@ -65,7 +65,8 @@ class MainActivity : View.OnClickListener, View.OnFocusChangeListener, SearchSuggestionListener, - NavigationBarView.OnItemSelectedListener { + NavigationBarView.OnItemSelectedListener, + NavigationBarView.OnItemReselectedListener { private val viewModel by viewModel() private val searchSuggestionViewModel by viewModel() @@ -100,6 +101,7 @@ class MainActivity : } navBar.setOnItemSelectedListener(this) + navBar.setOnItemReselectedListener(this) binding.fab?.setOnClickListener(this) binding.navRail?.headerView?.setOnClickListener(this) binding.searchView.isVoiceSearchEnabled = voiceInputLauncher.resolve(this, null) != null @@ -267,6 +269,13 @@ class MainActivity : return true } + override fun onNavigationItemReselected(item: MenuItem) { + val fragment = supportFragmentManager.findFragmentById(R.id.container) as? RecyclerViewOwner ?: return + val recyclerView = fragment.recyclerView + recyclerView.smoothScrollToPosition(0) + binding.appbar.isLifted = false + } + private fun onOpenReader(manga: Manga) { val options = binding.fab?.let { scaleUpActivityOptionsOf(it).toBundle()