Skip to content

Commit 03e3068

Browse files
committed
- Keep the code D.R.Y and use ClearStack as an overload method instead of a different name
1 parent 0b4ab8e commit 03e3068

File tree

2 files changed

+6
-29
lines changed

2 files changed

+6
-29
lines changed

frag-nav/src/main/java/com/ncapdevi/fragnav/FragNavController.kt

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -382,32 +382,7 @@ class FragNavController constructor(private val fragmentManger: FragmentManager,
382382
*/
383383
@JvmOverloads
384384
fun clearStack(transactionOptions: FragNavTransactionOptions? = defaultTransactionOptions) {
385-
if (currentStackIndex == NO_TAB) {
386-
return
387-
}
388-
389-
//Grab Current stack
390-
val fragmentStack = fragmentStacksTags[currentStackIndex]
391-
392-
// Only need to start popping and reattach if the stack is greater than 1
393-
if (fragmentStack.size > 1) {
394-
val ft = createTransactionWithOptions(transactionOptions, true)
395-
396-
//Pop all of the fragments on the stack and remove them from the FragmentManager
397-
while (fragmentStack.size > 1) {
398-
val fragment = getFragment(fragmentStack.pop())
399-
if (fragment != null) {
400-
ft.removeSafe(fragment)
401-
}
402-
}
403-
404-
// Attempt to reattach previous fragment
405-
val fragment = addPreviousFragment(ft, shouldDetachAttachOnPushPop())
406-
407-
commitTransaction(ft, transactionOptions)
408-
mCurrentFrag = fragment
409-
transactionListener?.onFragmentTransaction(currentFrag, TransactionType.POP)
410-
}
385+
clearStack(currentStackIndex,transactionOptions)
411386
}
412387

413388
/**
@@ -417,7 +392,7 @@ class FragNavController constructor(private val fragmentManger: FragmentManager,
417392
* @param transactionOptions Transaction options to be displayed
418393
*/
419394
@JvmOverloads
420-
fun clearTabStack(tabIndex: Int, transactionOptions: FragNavTransactionOptions? = defaultTransactionOptions) {
395+
fun clearStack(tabIndex: Int, transactionOptions: FragNavTransactionOptions? = defaultTransactionOptions) {
421396
if (tabIndex == NO_TAB) {
422397
return
423398
}
@@ -427,7 +402,9 @@ class FragNavController constructor(private val fragmentManger: FragmentManager,
427402

428403
// Only need to start popping and reattach if the stack is greater than 1
429404
if (fragmentStack.size > 1) {
430-
val ft = createTransactionWithOptions(transactionOptions,true,false)
405+
//Only animate if we're clearing the current stack
406+
val shouldAnimate = tabIndex == currentStackIndex
407+
val ft = createTransactionWithOptions(transactionOptions,true, shouldAnimate)
431408

432409
//Pop all of the fragments on the stack and remove them from the FragmentManager
433410
while (fragmentStack.size > 1) {

frag-nav/src/test/java/com/ncapdevi/fragnav/FragNavControllerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ class FragNavControllerTest : FragNavController.TransactionListener {
214214

215215
mFragNavController.switchTab(FragNavController.TAB2)
216216

217-
mFragNavController.clearTabStack(FragNavController.TAB1)
217+
mFragNavController.clearStack(FragNavController.TAB1)
218218

219219
mFragNavController.switchTab(FragNavController.TAB1)
220220
Assert.assertTrue(mFragNavController.currentStack?.size == 1)

0 commit comments

Comments
 (0)