@@ -5,6 +5,7 @@ import android.app.Application
55import android.os.Bundle
66import androidx.appcompat.app.AppCompatActivity
77import androidx.navigation.findNavController
8+ import com.willowtreeapps.common.Actions
89import com.willowtreeapps.common.middleware.Navigator
910import com.willowtreeapps.common.middleware.Screen
1011import com.willowtreeapps.namegame.store.SettingsDialogFragment
@@ -18,31 +19,41 @@ class AndroidNavigator : Navigator, Application.ActivityLifecycleCallbacks {
1819
1920
2021 private var currentActivity: AppCompatActivity ? = null
22+ private var cachedNavigationScreen: Screen ? = null
2123
2224 // TODO consider using current screen & destination screen to determine routing & animation
2325 override fun goto (screen : Screen ) {
24- val navController = currentActivity!! .findNavController(R .id.nav_host_fragment)
25- when (screen) {
26- Screen .QUESTION -> navController.navigate(R .id.action_startScreen_to_questionScreen)
27- Screen .GAME_COMPLETE -> navController.navigate(R .id.action_questionScreen_to_resultsFragment)
26+ if (currentActivity == null ) {
27+ cachedNavigationScreen = screen
28+ } else {
29+ val navController = currentActivity!! .findNavController(R .id.nav_host_fragment)
30+ when (screen) {
31+ Screen .QUESTION -> navController.navigate(R .id.action_startScreen_to_questionScreen)
32+ Screen .GAME_COMPLETE -> navController.navigate(R .id.action_questionScreen_to_resultsFragment)
2833// Screen.START -> navController.navigate(R.id.startScreen)
29- Screen .START -> navController.navigate(R .id.action_resultsFragment_to_startScreen)
30- Screen .SETTINGS -> {
31- val dialog = SettingsDialogFragment .newInstance()
32- dialog.show(currentActivity!! .supportFragmentManager, " SettingsFragment" )
34+ Screen .START -> navController.navigate(R .id.action_resultsFragment_to_startScreen)
35+ Screen .SETTINGS -> {
36+ val dialog = SettingsDialogFragment .newInstance()
37+ dialog.show(currentActivity!! .supportFragmentManager, " SettingsFragment" )
38+ }
39+ else -> throw IllegalArgumentException (" Screen $screen is not handled in AndroidNavigator" )
3340 }
34- else -> throw IllegalArgumentException (" Screen $screen is not handled in AndroidNavigator" )
3541 }
3642 }
3743
3844 override fun onActivityPaused (activity : Activity ? ) {
3945 }
4046
4147 override fun onActivityResumed (activity : Activity ? ) {
48+ if (cachedNavigationScreen!= null ) {
49+ goto(cachedNavigationScreen!! )
50+ cachedNavigationScreen = null
51+ }
4252 }
4353
4454 override fun onActivityStarted (activity : Activity ? ) {
4555 currentActivity = activity as AppCompatActivity ?
56+
4657 }
4758
4859 override fun onActivityDestroyed (activity : Activity ? ) {
0 commit comments