From 559bc5b0d03f890efcca01d6d3afec61efdd7e1d Mon Sep 17 00:00:00 2001 From: Seiko Date: Thu, 19 Aug 2021 10:10:29 +0800 Subject: [PATCH] clear fragmentManager backStack in pushTo() see: https://github.com/vitaviva/fragivity/issues/47 --- .../github/fragivity/example/HomeFragment.kt | 20 +++++++++---------- .../app/FragivityFragmentNavigator.kt | 7 ++++++- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/github/fragivity/example/HomeFragment.kt b/app/src/main/java/com/github/fragivity/example/HomeFragment.kt index ff9547c..ab514e4 100644 --- a/app/src/main/java/com/github/fragivity/example/HomeFragment.kt +++ b/app/src/main/java/com/github/fragivity/example/HomeFragment.kt @@ -33,16 +33,16 @@ class HomeFragment : AbsBaseFragment(false) { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - requireActivity().onBackPressedDispatcher - .addCallback(this) { - val current = System.currentTimeMillis() - if (current - lastClickTime > 2000) { - showToast("再按一次退出") - lastClickTime = current - } else { - finish() - } - } +// requireActivity().onBackPressedDispatcher +// .addCallback(this) { +// val current = System.currentTimeMillis() +// if (current - lastClickTime > 2000) { +// showToast("再按一次退出") +// lastClickTime = current +// } else { +// finish() +// } +// } } override fun onCreateView( diff --git a/library/src/main/kotlin/androidx/fragment/app/FragivityFragmentNavigator.kt b/library/src/main/kotlin/androidx/fragment/app/FragivityFragmentNavigator.kt index 2d37ab6..e89ff72 100644 --- a/library/src/main/kotlin/androidx/fragment/app/FragivityFragmentNavigator.kt +++ b/library/src/main/kotlin/androidx/fragment/app/FragivityFragmentNavigator.kt @@ -117,7 +117,7 @@ class FragivityFragmentNavigator( } val destId = destination.id - val initialNavigation = backStack.isEmpty() + val initialNavigation = backStack.isEmpty() || isPushTo val fragment = createFragment(destination, args) ft.add(containerId, fragment, generateBackStackName(backStack.size, destId)) @@ -173,6 +173,11 @@ class FragivityFragmentNavigator( ft.setReorderingAllowed(true) ft.commit() + if (isPushTo) { + // pushTo情况下清空返回栈 + fragmentManager.mBackStack?.clear() + } + if (isPopSelf) { backStack.removeLast() backStack.add(destId)