Fixed
Status Update
Comments
da...@sucharda.cz <da...@sucharda.cz> #2
Periods are technically valid characters in schemes as per https://tools.ietf.org/html/rfc3986#section-3.1 alongside the currently supported + and - characters, so it probably makes sense to add it as a supported character.
I take it your original request was just to note in the documentation that it wasn't supported?
I take it your original request was just to note in the documentation that it wasn't supported?
jb...@google.com <jb...@google.com> #3
I really would like to have it fixed.Because we have scheme with periods. I got used to it, by setting new pattern to the field. So for me it's ok now.
da...@sucharda.cz <da...@sucharda.cz> #4
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 59b75c42c73e4a6a9979207c702e6841e6665268
Author: Ian Lake <ilake@google.com>
Date: Wed Oct 10 15:54:46 2018
Regex escape NavDeepLinks
Ensure that the only deep link regex like
behavior are {argName} and .* blocks and treat
all other characters as literals.
This fixes issues with URLs with query parameters
(where the ? is a special character) and allows
us to support schemes with '+', -', and '.'
characters as per
https://tools.ietf.org/html/rfc3986#section-3.1
Test: NavDeepLinkTest tests pass
BUG: 110057514
BUG: 112806402
Change-Id: If621eb66ed3ca5e0da780c19b30068dd2824d461
M navigation/common/src/androidTest/java/androidx/navigation/NavDeepLinkTest.kt
M navigation/common/src/main/java/androidx/navigation/NavDeepLink.java
https://android-review.googlesource.com/785556
https://goto.google.com/android-sha1/59b75c42c73e4a6a9979207c702e6841e6665268
Branch: androidx-master-dev
commit 59b75c42c73e4a6a9979207c702e6841e6665268
Author: Ian Lake <ilake@google.com>
Date: Wed Oct 10 15:54:46 2018
Regex escape NavDeepLinks
Ensure that the only deep link regex like
behavior are {argName} and .* blocks and treat
all other characters as literals.
This fixes issues with URLs with query parameters
(where the ? is a special character) and allows
us to support schemes with '+', -', and '.'
characters as per
Test: NavDeepLinkTest tests pass
BUG: 110057514
BUG: 112806402
Change-Id: If621eb66ed3ca5e0da780c19b30068dd2824d461
M navigation/common/src/androidTest/java/androidx/navigation/NavDeepLinkTest.kt
M navigation/common/src/main/java/androidx/navigation/NavDeepLink.java
da...@sucharda.cz <da...@sucharda.cz> #5
The library now supports all schemes supported by https://tools.ietf.org/html/rfc3986#section-3.1
The regex being used is ^[a-zA-Z]+[+\w\-.]*:
Over to Studio to ensure that Manifest Merger also supports the updated schema types.
The regex being used is ^[a-zA-Z]+[+\w\-.]*:
Over to Studio to ensure that Manifest Merger also supports the updated schema types.
jb...@google.com <jb...@google.com>
cl...@google.com <cl...@google.com> #6
Yes, Manifest Merger supports this. Pending CL adds test for this scenario.
ap...@google.com <ap...@google.com> #7
Project: platform/frameworks/support
Branch: androidx-main
commit 6b358154b794a0456b089ac8e548bfb830dd6c22
Author: Clara Fok <clarafok@google.com>
Date: Tue Mar 14 17:56:12 2023
Fix missing non-nullable arg when rebuilding hierarchy
When navigating with NavDirections, args is populated with an empty bundle. This causes issue when we rebuild parent hierarchy while adding a new entry to NavBackStack. If the Entry being rebuilt contains a non-nullalbe arg, i.e. Long, this empty bundle will cause an exception.
Test: ./gradlew navigation:navigation-runtime:cC
Bug: 249988437
Change-Id: I5c8ce739ad9a3428c8a8de13eae391bfff0db5df
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/2488855
Branch: androidx-main
commit 6b358154b794a0456b089ac8e548bfb830dd6c22
Author: Clara Fok <clarafok@google.com>
Date: Tue Mar 14 17:56:12 2023
Fix missing non-nullable arg when rebuilding hierarchy
When navigating with NavDirections, args is populated with an empty bundle. This causes issue when we rebuild parent hierarchy while adding a new entry to NavBackStack. If the Entry being rebuilt contains a non-nullalbe arg, i.e. Long, this empty bundle will cause an exception.
Test: ./gradlew navigation:navigation-runtime:cC
Bug: 249988437
Change-Id: I5c8ce739ad9a3428c8a8de13eae391bfff0db5df
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
pr...@google.com <pr...@google.com> #8
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.navigation:navigation-runtime:2.6.0-alpha08
Description
Component used: Navigation
Version used: 2.5.1 and 2.5.2
Last known working version: 2.3.5
Devices/Android versions reproduced on: Huawei P20 Light / AN 9 (EMUI 9.1.0)
So our navigation is kinda complex so I will try to simplify the configuration. If there is a nested graph with arguments which cannot be null (and no default value is supplied) and
popUpTo
is used to remove nested graph during destination (nested) navigation it tries to recreate nested graph as a parent for the destination being navigated to.So now if the navigation is triggered like this:
It will pop fragments from back stack, but it will not change parent for
ChildFragment2
which will be set tochildNavGraph
and since it is not in the back stack anymore it will try to recreate it with default values. ButargumentLong
is not nullable and has no default value so it will crash:Note: Interesting thing is that it does not crash with non-nullable String argument for some reason (ah I see, it is because String NavType is nullable by default:
StringType: NavType<String?>
vsLongType: NavType<Long>
).Possible fixes for us:
popUpTo
to pop parent (navGraph) of a Fragment (node) from XML but usepopBackStack
from code instead.argumentLong
.Basically I am not sure if this an intended behavior or a bug. Gonna mark it as a bug because it worked in 2.3.5. I understand that Destination should have a parent but what is the reason to create a parent that does not exist and will never be displayed in this case, since it was already poped and thus it should not be displayed to the user.
At the moment two solutions come to mind:
LongType
and other types nullable same asStringType
. Again not sure if this can be done and it probably is not a proper solution (change).There might of course be other solutions that I cannot see.
Thank you for your time and help.