Status Update
Comments
il...@google.com <il...@google.com> #2
So there does seem to be a bug in Navigation that causes this to fail.
When it navigates with popUpTo
and removes SecondFragment
, that removal in fragment is set for a frame later and before it is actually removed the navigate call in the onViewCreated
of SecondFragment
enqueues another call to add it back. But we still need to destroy SecondDetailFragment
which ends up marking the NavBackStackEntry
associated with SecondFragment
as complete before navigation has received the call from the fragment that it has been added back. So by the time it hits this check, the SecondFragment
is in the correct state, but Navigation has no way of referencing it so it assumes that it is not associated with an entry.
But this is not the way this type of situation should be implemented. Instead of having the destinations as part of the NavGraph, they should:
- be managed by the childFragmentManager of
SecondFragment
. So instead of going back toSecondFragment
just to go somewhere else, each of the fragments take the entire content ofSecondFragment
and are swapped out. - for some sort of a/b testing, set different graphs in the Activity. The graphs would keep the same
SecondFragment
id, but swap out the names and then you choose the correct graph based on the condition.
mi...@gmail.com <mi...@gmail.com> #4
- Have
SecondFragment
as part of your graph and then inside ofSecondFragment
call thechildFragmentManager
andreplace
with the fragment you actually want to show, whether that isSecondTypeOne
orSecondTypeTwo
. - Create different graphs and follow along with the
on using different graphs dynamically and inflate and set the one needed based on logic in your Activity.docs
Description
Android Studio 3.3 RC 3
Build #AI-182.5107.16.33.5183351, built on December 14, 2018
JRE: 1.8.0_152-release-1248-b01 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
Navigation Library version used: 1.0.0-alpha09
Repro steps:
1. Create two activities and two fragments
2. Set home fragments for both activities
3. Set up navigation between these two activities as described in the documentation
3. Configure animations in navigation graph for navigation between two activities to a desired animation/transition
app:enterAnim
app:exitAnim
app:popEnterAnim
4. Test the app
Expected result:
- Override Activities default transition with transition specified in navigation graph for enter, exit and pop animations.
Achieved result:
- Animation for enter and exit successfully changed
- Animation for pop actions is still the default activity animation
Additional notes:
Using function overridePendingTransition() works just fine.