Fixed
Status Update
Comments
jp...@google.com <jp...@google.com>
jo...@google.com <jo...@google.com> #2
Navigation is built with Support Library Fragments so has no access to the FragmentFactory itself. I think we can make some minor changes to FragmentNavigator to make it easy for developers who are using Navigation 1.0 and Fragments 1.1.0 together to call through to their FragmentFactory.
Once Navigation switches to AndroidX (post 1.0), we'll use FragmentFactory directly.
Once Navigation switches to AndroidX (post 1.0), we'll use FragmentFactory directly.
jo...@google.com <jo...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 1b215f0d93828286782776b9a12d2387097947f9
Author: Ian Lake <ilake@google.com>
Date: Sun Nov 25 21:45:56 2018
Move Fragment creation to FragmentNavigator
Provide an instantiateFragment() method on
FragmentNavigator which serves as the
centralized place to instantiate new
Fragment instances for FragmentNavigator.
Besides moving this business logic out of
the dumb POJO FragmentNavigator.Destination,
this also provides a future extension point
for integrating in FragmentFactory.
Test: existing tests passes, testapp still works
BUG: 119054429
Change-Id: If60471a704ef77bc35b30838e152a31cde8bc235
M navigation/fragment/ktx/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorDestinationBuilderTest.kt
M navigation/fragment/ktx/src/main/java/androidx/navigation/fragment/FragmentNavigatorDestinationBuilder.kt
M navigation/fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
M navigation/fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.java
https://android-review.googlesource.com/835682
https://goto.google.com/android-sha1/1b215f0d93828286782776b9a12d2387097947f9
Branch: androidx-master-dev
commit 1b215f0d93828286782776b9a12d2387097947f9
Author: Ian Lake <ilake@google.com>
Date: Sun Nov 25 21:45:56 2018
Move Fragment creation to FragmentNavigator
Provide an instantiateFragment() method on
FragmentNavigator which serves as the
centralized place to instantiate new
Fragment instances for FragmentNavigator.
Besides moving this business logic out of
the dumb POJO FragmentNavigator.Destination,
this also provides a future extension point
for integrating in FragmentFactory.
Test: existing tests passes, testapp still works
BUG: 119054429
Change-Id: If60471a704ef77bc35b30838e152a31cde8bc235
M navigation/fragment/ktx/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorDestinationBuilderTest.kt
M navigation/fragment/ktx/src/main/java/androidx/navigation/fragment/FragmentNavigatorDestinationBuilder.kt
M navigation/fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
M navigation/fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.java
jo...@google.com <jo...@google.com> #4
Navigation still depends on Support Library and not AndroidX, so we can't directly use FragmentFactory in FragmentNavigator.
However, in alpha08, you'll be able to subclass FragmentNavigator and override instantiateFragment(), calling into FragmentFactory if you're using AndroidX Fragment 1.1.0+. You'd also need to subclass NavHostFragment and override createFragmentNavigator() to return your custom FragmentNavigator subclass (or, if you're not using app:navGraph, you can set it via navHostFragment.navController.navigatorProvider += YourFragmentNavigator(context, navHostFragment.childFragmentManager)).
We'll keep this open until Navigation has moved to AndroidX and can directly use FragmentFactory as its default implementation of instantiateFragment().
However, in alpha08, you'll be able to subclass FragmentNavigator and override instantiateFragment(), calling into FragmentFactory if you're using AndroidX Fragment 1.1.0+. You'd also need to subclass NavHostFragment and override createFragmentNavigator() to return your custom FragmentNavigator subclass (or, if you're not using app:navGraph, you can set it via navHostFragment.navController.navigatorProvider += YourFragmentNavigator(context, navHostFragment.childFragmentManager)).
We'll keep this open until Navigation has moved to AndroidX and can directly use FragmentFactory as its default implementation of instantiateFragment().
ap...@google.com <ap...@google.com> #5
Thanks for the workaround in alpha08!
jo...@google.com <jo...@google.com>
an...@google.com <an...@google.com> #6
Can't wait to use this library after the move to AndroidX.
For us is a major blocking feature and we don't want to proceed overriding all the necessary classes.
Thank you Ian and the rest of the navigation team.
For us is a major blocking feature and we don't want to proceed overriding all the necessary classes.
Thank you Ian and the rest of the navigation team.
an...@google.com <an...@google.com> #7
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 74c3760e428648d00249dc1d38865b7802f48a9a
Author: Ian Lake <ilake@google.com>
Date: Wed Mar 13 13:11:57 2019
Use FragmentFactory in FragmentNavigator
Rely on the FragmentManager's FragmentFactory
to instantiate Fragments created for
FragmentNavigator.
Test: new FragmentNavigatorTest
Fixes: 119054429
Change-Id: Icbeb2771e29cafdc52e4c4ea770ce89f739921d1
M navigation/fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
M navigation/fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.java
https://android-review.googlesource.com/928481
https://goto.google.com/android-sha1/74c3760e428648d00249dc1d38865b7802f48a9a
Branch: androidx-master-dev
commit 74c3760e428648d00249dc1d38865b7802f48a9a
Author: Ian Lake <ilake@google.com>
Date: Wed Mar 13 13:11:57 2019
Use FragmentFactory in FragmentNavigator
Rely on the FragmentManager's FragmentFactory
to instantiate Fragments created for
FragmentNavigator.
Test: new FragmentNavigatorTest
Fixes: 119054429
Change-Id: Icbeb2771e29cafdc52e4c4ea770ce89f739921d1
M navigation/fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
M navigation/fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.java
de...@google.com <de...@google.com> #8
This is fixed internally - FragmentNavigator will use the FragmentFactory to create Fragments in the upcoming 2.1.0-alpha01 release.
se...@gmail.com <se...@gmail.com> #9
Thank you Ian :)
Description
We do not (yet) have a way to reproduce the problem, but we can see on go/crash an high level of report with `EXC_BAD_ACCESS` issue with
`std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::~sentry()`
The stack doesn't see much, except that this is on M1 ( qemu-arch-aarch64, using Qt6)
```
Stack Quality26%Show frame trust levels
0x00000001aba1d40c (libc++.1.dylib + 0x0001f40c) std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::~sentry()
0x000000010103d768 (qemu-system-aarch64 + 0x001b1768)
0x000000010103d768 (qemu-system-aarch64 + 0x001b1768)
0x0000000101447224 (qemu-system-aarch64 + 0x005bb224)
0x000000010143c138 (qemu-system-aarch64 + 0x005b0138)
0x00000001069ccc48 (libQt6CoreAndroidEmu.6.2.1.dylib + 0x00010c48)
0x00000001069ccb10 (libQt6CoreAndroidEmu.6.2.1.dylib + 0x00010b10)
0x00000001069d319c (libQt6CoreAndroidEmu.6.2.1.dylib + 0x0001719c)
0x0000000107c2ea90 (libQt6GuiAndroidEmu.6.2.1.dylib + 0x0008aa90)
0x0000000107c75c8c (libQt6GuiAndroidEmu.6.2.1.dylib + 0x000d1c8c)
0x00000001066c8a4c (libqcocoaAndroidEmu.dylib + 0x00014a4c)
0x00000001abb9da04 (CoreFoundation + 0x00081a04) __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
0x00000001abb9d998 (CoreFoundation + 0x00081998) __CFRunLoopDoSource0
0x00000001abb9d708 (CoreFoundation + 0x00081708) __CFRunLoopDoSources0
0x00000001abb9c30c (CoreFoundation + 0x0008030c) __CFRunLoopRun
0x00000001abb9b874 (CoreFoundation + 0x0007f874) CFRunLoopRunSpecific
0x00000001b527bf9c (HIToolbox + 0x00031f9c) RunCurrentEventLoopInMode
0x00000001b527bc2c (HIToolbox + 0x00031c2c) ReceiveNextEventCommon
0x00000001b527bb28 (HIToolbox + 0x00031b28) _BlockUntilNextEventMatchingListInModeWithFilter
0x00000001aee21848 (AppKit + 0x00039848) _DPSNextEvent
0x00000001aee209d8 (AppKit + 0x000389d8) -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
0x00000001aee14e08 (AppKit + 0x0002ce08) -[NSApplication run]
0x00000001066c792c (libqcocoaAndroidEmu.dylib + 0x0001392c)
0x0000000106a547f0 (libQt6CoreAndroidEmu.6.2.1.dylib + 0x000987f0)
0x0000000106a4bb44 (libQt6CoreAndroidEmu.6.2.1.dylib + 0x0008fb44)
0x000000010143a3f8 (qemu-system-aarch64 + 0x005ae3f8)
0x000000010103caf0 (qemu-system-aarch64 + 0x001b0af0)
0x00000001ab793e4c (dyld + 0x00005e4c) start
```
This is seen with stable 32.1.12 , after 1 week we have 2035 sample reports from 745 unique users