Fixed
Status Update
Comments
il...@google.com <il...@google.com>
il...@google.com <il...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-master-dev
commit f57b5cbd142016a2d95fd7bf736262049b085aeb
Author: Jeremy Woods <jbwoods@google.com>
Date: Mon Nov 09 13:23:07 2020
Move FloatingWindow interface to Kotlin
Converted the FloatingWindow inferface to koltin and added the kotlin
std library dependency to navigation-common.
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I98af40e5c9bc747d792180990f1654d6353aa4b5
M navigation/navigation-common/build.gradle
M navigation/navigation-common/src/main/java/androidx/navigation/FloatingWindow.kt
https://android-review.googlesource.com/1492738
Branch: androidx-master-dev
commit f57b5cbd142016a2d95fd7bf736262049b085aeb
Author: Jeremy Woods <jbwoods@google.com>
Date: Mon Nov 09 13:23:07 2020
Move FloatingWindow interface to Kotlin
Converted the FloatingWindow inferface to koltin and added the kotlin
std library dependency to navigation-common.
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I98af40e5c9bc747d792180990f1654d6353aa4b5
M navigation/navigation-common/build.gradle
M navigation/navigation-common/src/main/java/androidx/navigation/FloatingWindow.kt
sl...@czerwinski.info.pl <sl...@czerwinski.info.pl> #3
Project: platform/frameworks/support
Branch: androidx-main
commit b637fdfd6b937d19d4e419c4bfba9b437af6378c
Author: Ian Lake <ilake@google.com>
Date: Thu Apr 01 16:13:27 2021
Merge Navigation Compose version back into Navigation
Rather than run Navigation Compose as a separate,
parallel project from the other Navigation artifacts,
merge the versions together so that we can better
integrate the artifacts together and leverage new
alpha features.
Test: ./gradlew bOS, ran Studio in FLAN and COMPOSE configs
BUG: 172823546
Change-Id: I139a44d95c91dc3cf2e951225aabbc2581914e95
M buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
M navigation/navigation-compose/build.gradle
M navigation/navigation-compose/samples/build.gradle
M navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostTest.kt
M navigation/navigation-runtime/build.gradle
M settings.gradle
M testutils/testutils-navigation/build.gradle
https://android-review.googlesource.com/1662999
Branch: androidx-main
commit b637fdfd6b937d19d4e419c4bfba9b437af6378c
Author: Ian Lake <ilake@google.com>
Date: Thu Apr 01 16:13:27 2021
Merge Navigation Compose version back into Navigation
Rather than run Navigation Compose as a separate,
parallel project from the other Navigation artifacts,
merge the versions together so that we can better
integrate the artifacts together and leverage new
alpha features.
Test: ./gradlew bOS, ran Studio in FLAN and COMPOSE configs
BUG: 172823546
Change-Id: I139a44d95c91dc3cf2e951225aabbc2581914e95
M buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
M navigation/navigation-compose/build.gradle
M navigation/navigation-compose/samples/build.gradle
M navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostTest.kt
M navigation/navigation-runtime/build.gradle
M settings.gradle
M testutils/testutils-navigation/build.gradle
il...@google.com <il...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit 51769b7a8d6d3e2032e45b3ec1e3cfe29e718ab6
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Mar 31 10:59:25 2021
Add routes to NavDestination
This change introduces the concept of a route to NavDestination. A route
is String that defines the path to the Destination. Setting the route on
a NavDestination will replace the any id that was set previously and
adds a deep link to the destination. You can set a route on the
NavDestination programatically, or through xml.
RelNote: "You can now add a route to your NavDestination"
Test: NavDestinationTest
Bug: 172823546
Change-Id: I77daf563f480ae54b9728a78e7696ea96d19f264
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDestinationAndroidTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt
M navigation/navigation-common/src/main/res-public/values/public_attrs.xml
M navigation/navigation-common/src/main/res/values/attrs.xml
https://android-review.googlesource.com/1660682
Branch: androidx-main
commit 51769b7a8d6d3e2032e45b3ec1e3cfe29e718ab6
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Mar 31 10:59:25 2021
Add routes to NavDestination
This change introduces the concept of a route to NavDestination. A route
is String that defines the path to the Destination. Setting the route on
a NavDestination will replace the any id that was set previously and
adds a deep link to the destination. You can set a route on the
NavDestination programatically, or through xml.
RelNote: "You can now add a route to your NavDestination"
Test: NavDestinationTest
Bug: 172823546
Change-Id: I77daf563f480ae54b9728a78e7696ea96d19f264
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDestinationAndroidTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt
M navigation/navigation-common/src/main/res-public/values/public_attrs.xml
M navigation/navigation-common/src/main/res/values/attrs.xml
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit df16e2452d8333af236a9e5203b396b98f1056be
Author: Jeremy Woods <jbwoods@google.com>
Date: Mon Apr 05 17:19:54 2021
Add routes to NavDestination Kotlin DSL
You can now add a route to your NavDestination when using the Kotlin
DSL.
RelNote: "You can now add a route to your NavDestination via the Kotlin
DSL"
Test: NavDestinationBuilderTest
Bug: 172823546
Change-Id: I1276418c8ca0b22eb420c0be6b97f0a5d41de0f9
M navigation/navigation-common/api/api_lint.ignore
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDestinationBuilderTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestinationBuilder.kt
https://android-review.googlesource.com/1660683
Branch: androidx-main
commit df16e2452d8333af236a9e5203b396b98f1056be
Author: Jeremy Woods <jbwoods@google.com>
Date: Mon Apr 05 17:19:54 2021
Add routes to NavDestination Kotlin DSL
You can now add a route to your NavDestination when using the Kotlin
DSL.
RelNote: "You can now add a route to your NavDestination via the Kotlin
DSL"
Test: NavDestinationBuilderTest
Bug: 172823546
Change-Id: I1276418c8ca0b22eb420c0be6b97f0a5d41de0f9
M navigation/navigation-common/api/api_lint.ignore
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDestinationBuilderTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestinationBuilder.kt
il...@google.com <il...@google.com> #6
Project: platform/frameworks/support
Branch: androidx-main
commit e6ad7e497c3006c7c1fbe701c36d45f3906c33b0
Author: Jeremy Woods <jbwoods@google.com>
Date: Mon May 03 17:50:16 2021
Deprecated getStartDestination
Deprecating getStartDestination in favor of getStartDestinationId to
make the API more explicit.
RelNote: "The `getStartDestination()` API has been deprecated in favor
of `getStartDestinationId()`."
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I0887ffe673bea453b69dff286d5dc142ce4ef462
M compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/navigation/Navigation.kt
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavGraphAndroidTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraph.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraphBuilder.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraphNavigator.kt
M navigation/navigation-common/src/test/java/androidx/navigation/NavDestinationTest.kt
M navigation/navigation-common/src/test/java/androidx/navigation/NavGraphNavigatorTest.kt
M navigation/navigation-common/src/test/java/androidx/navigation/NavGraphTest.kt
M navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/BottomBarNavDemo.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavInflaterTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
M navigation/navigation-ui/src/main/java/androidx/navigation/ui/NavigationUI.kt
https://android-review.googlesource.com/1695087
Branch: androidx-main
commit e6ad7e497c3006c7c1fbe701c36d45f3906c33b0
Author: Jeremy Woods <jbwoods@google.com>
Date: Mon May 03 17:50:16 2021
Deprecated getStartDestination
Deprecating getStartDestination in favor of getStartDestinationId to
make the API more explicit.
RelNote: "The `getStartDestination()` API has been deprecated in favor
of `getStartDestinationId()`."
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I0887ffe673bea453b69dff286d5dc142ce4ef462
M compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/navigation/Navigation.kt
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavGraphAndroidTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraph.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraphBuilder.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraphNavigator.kt
M navigation/navigation-common/src/test/java/androidx/navigation/NavDestinationTest.kt
M navigation/navigation-common/src/test/java/androidx/navigation/NavGraphNavigatorTest.kt
M navigation/navigation-common/src/test/java/androidx/navigation/NavGraphTest.kt
M navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/BottomBarNavDemo.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavInflaterTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
M navigation/navigation-ui/src/main/java/androidx/navigation/ui/NavigationUI.kt
ap...@google.com <ap...@google.com> #7
Project: platform/frameworks/support
Branch: androidx-main
commit 81aaeccc3cd3530b790317e0488380464f29023e
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed May 05 13:08:11 2021
Deprecate popUpTo in NavOptions
This deprecates popUpTo properties in by NavOptions and the
NavOptionsBuilder DSL in favor of popUpToId. Setting the popUpToId
should be done by using the popUpTo functions without passing in a
builder.
RelNote: "The `popUpTo` kotlin property has been deprecated in favor of
`popUpToId`."
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I59c73c383b84eb2b36472966aedff1b53957e26d
M navigation/navigation-common/api/api_lint.ignore
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDestinationBuilderTest.kt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavOptionsBuilderTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavOptions.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavOptionsBuilder.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
https://android-review.googlesource.com/1697773
Branch: androidx-main
commit 81aaeccc3cd3530b790317e0488380464f29023e
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed May 05 13:08:11 2021
Deprecate popUpTo in NavOptions
This deprecates popUpTo properties in by NavOptions and the
NavOptionsBuilder DSL in favor of popUpToId. Setting the popUpToId
should be done by using the popUpTo functions without passing in a
builder.
RelNote: "The `popUpTo` kotlin property has been deprecated in favor of
`popUpToId`."
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I59c73c383b84eb2b36472966aedff1b53957e26d
M navigation/navigation-common/api/api_lint.ignore
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDestinationBuilderTest.kt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavOptionsBuilderTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavOptions.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavOptionsBuilder.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
Description
Version used: 1.0.0-alpha02
Devices/Android versions reproduced on: Emulator API 28, Samsung J5 API 25
Sample project attached.
I'm trying to create a custom Navigator and custom NavDestination that would animate ConstraintLayout (but any custom NavDestination would cause this issue).
Intended behaviour is shown in attached video: Layout_animations.webm
However, when I rotate the screen, while the navigation is on the custom destination, the application crashes.
The crash is caused by an unknown destination, which can only be added after custom navigator.
If I add custom destination in nav_main.xml, the app will also crash, because the navigator is not yet added.
This issue could be fixed by extending NavHostFragment, but I would need to override the whole onCreate() method.
I would need to add my custom navigator right after the line:
mNavController = new NavController(context);
I can think of 2 possible solutions in the library:
1. Delegate creating of NavController, so that a custom NavController can be provided in the XML layout file.
2. Call a new protected method "NavHostFragment.onNavControllerCreated(NavController)" right after the NavController is created, that could be overridden in a custom NavHostFragment, before the graph is created.
If there is any solution to my problem that I didn't think of, please provide a more exhaustive example in the documentation:
Stack trace:
2018-06-25 10:54:28.356 14543-14543/it.czerwinski.customnavigatorexample E/AndroidRuntime: FATAL EXCEPTION: main
Process: it.czerwinski.customnavigatorexample, PID: 14543
java.lang.RuntimeException: Unable to start activity ComponentInfo{it.czerwinski.customnavigatorexample/it.czerwinski.customnavigatorexample.MainActivity}: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2925)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4792)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4711)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:110)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1800)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
Caused by: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class fragment
Caused by: java.lang.IllegalStateException: unknown destination during restore: it.czerwinski.customnavigatorexample:id/animatedLayoutDestination
at androidx.navigation.NavController.onGraphCreated(NavController.java:424)
at androidx.navigation.NavController.setGraph(NavController.java:386)
at androidx.navigation.NavController.restoreState(NavController.java:742)
at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.java:215)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2400)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1418)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1684)
at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3772)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:120)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:395)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:377)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:467)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at it.czerwinski.customnavigatorexample.MainActivity.onCreate(MainActivity.kt:15)
at android.app.Activity.performCreate(Activity.java:7130)
at android.app.Activity.performCreate(Activity.java:7121)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1262)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2905)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4792)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4711)
2018-06-25 10:54:28.356 14543-14543/it.czerwinski.customnavigatorexample E/AndroidRuntime: at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:110)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1800)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)