Fixed
Status Update
Comments
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #2
As a workaround, your Fragment can set the arguments to an empty Bundle if it is null:
if (arguments == null) {
arguments = Bundle()
}
// Assuming myArgs is set via by navArgs()
val myArg = myArgs.myArg
if (arguments == null) {
arguments = Bundle()
}
// Assuming myArgs is set via by navArgs()
val myArg = myArgs.myArg
il...@google.com <il...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-master-dev
commit d8c9982a9cac54247134252eea8d8a4cbf757e74
Author: Ian Lake <ilake@google.com>
Date: Fri Mar 15 13:21:12 2019
Avoid sending a null Bundle when NavArguments are present
When using arguments with android:defaultValue="@null",
these attributes are dropped by XmlPullParser, so the
NavArgument does not have a default value set. Change
addInDefaultArgs() to always return a non-null Bundle
if there are NavArguments set at all to ensure that
Safe Args can correctly parse the empty Bundle and
fill in the correct default values.
This also simplifies the process if you're not using
Safe Args since you can requireArguments() and the
proper gets with your default values.
Test: new AddInDefaultArgsTest parameterized test
Fixes: 128531879
Change-Id: I6ec9673100790df03b5aa1d86f74dbec70173095
A navigation/common/src/androidTest/java/androidx/navigation/AddInDefaultArgsTest.kt
M navigation/common/src/main/java/androidx/navigation/NavDestination.java
https://android-review.googlesource.com/930456
https://goto.google.com/android-sha1/d8c9982a9cac54247134252eea8d8a4cbf757e74
Branch: androidx-master-dev
commit d8c9982a9cac54247134252eea8d8a4cbf757e74
Author: Ian Lake <ilake@google.com>
Date: Fri Mar 15 13:21:12 2019
Avoid sending a null Bundle when NavArguments are present
When using arguments with android:defaultValue="@null",
these attributes are dropped by XmlPullParser, so the
NavArgument does not have a default value set. Change
addInDefaultArgs() to always return a non-null Bundle
if there are NavArguments set at all to ensure that
Safe Args can correctly parse the empty Bundle and
fill in the correct default values.
This also simplifies the process if you're not using
Safe Args since you can requireArguments() and the
proper gets with your default values.
Test: new AddInDefaultArgsTest parameterized test
Fixes: 128531879
Change-Id: I6ec9673100790df03b5aa1d86f74dbec70173095
A navigation/common/src/androidTest/java/androidx/navigation/AddInDefaultArgsTest.kt
M navigation/common/src/main/java/androidx/navigation/NavDestination.java
Description
Version used: 1.0.6-alpha
Previous version without bug: 1.0.4-alpha
Devices/Android versions reproduced on: Samsung Galaxy Edge 7, Android 8.0.0
Navigation doesn't take into account
app:enterAnim
app:exitAnim
that are set for action to activity:
<navigation>
<fragment android:id="@+id/mainFragment">
<action
android:id="@+id/action_mainFragment_to_activity2"
app:destination="@id/activity2"
app:enterAnim="@anim/view_slide_bottom_in"
app:exitAnim="@anim/no_animation"/>
</fragment>
<activity android:id="@+id/activity2"/>
<navigation/>
This doesn't work:
NavHostFragment.findNavController(this).navigate(R.id.action_mainFragment_to_activity2)
But if I set directly with ActivityOptions it works:
NavHostFragment.findNavController(this)
.navigate(R.id.action_mainFragment_to_activity2, null, null,
ActivityNavigator.Extras(
ActivityOptionsCompat.makeCustomAnimation(activity!!, R.anim.view_slide_bottom_in, R.anim.no_animation)))
Example project to reproduce issue
It is expected to work the same.