[Android] showModal : Cannot remove Fragment attached to a different FragmentManager
See original GitHub issueUsing rc version and @nativescript/core i am facing an issue with modal views.
To counter that isssue https://github.com/NativeScript/NativeScript/issues/7744 i need to wrap my modal views inside a Frame
Something like this
<Frame>
<Page actionBarHidden ref="page">
<StackLayout class="page" height="100%">
</StackLayout>
</Page>
</Frame>
But now it crashes on Android when closing the modal with this error:
System.err: Error: java.lang.IllegalStateException: Cannot remove Fragment attached to a different FragmentManager. Fragment fragment2[2]<Page(65)> is already attached to a FragmentManager.
System.err:
System.err: StackTrace:
System.err: Frame.disposeCurrentFragment(file:///data/data/com.microoled.activelook.mobile/files/app/vendor.js:27493:17)
System.err: at Frame.onUnloaded(file:///data/data/com.microoled.activelook.mobile/files/app/vendor.js:27475:10)
System.err: at (file:///data/data/com.microoled.activelook.mobile/files/app/vendor.js:20445:20)
System.err: at ViewBase.callFunctionWithSuper(file:///data/data/com.microoled.activelook.mobile/files/app/vendor.js:20426:5)
System.err: at ViewBase.callUnloaded(file:///data/data/com.microoled.activelook.mobile/files/app/vendor.js:20444:10)
System.err: at DialogFragmentImpl.onDismiss(file:///data/data/com.microoled.activelook.mobile/files/app/vendor.js:22626:15)
System.err: at com.tns.Runtime.callJSMethodNative(Native Method)
I think the issue comes indeed from the fact that the manager used to opened the modal window
https://github.com/NativeScript/NativeScript/blob/cc97a1680009f1bf6dbf97c421f6e8dc535295b5/nativescript-core/ui/core/view/view.android.ts#L657
is not the same as the one used in disposeCurrentFragment
https://github.com/NativeScript/NativeScript/blob/cc97a1680009f1bf6dbf97c421f6e8dc535295b5/nativescript-core/ui/frame/frame.android.ts#L260
which gets the FragmentManager here
https://github.com/NativeScript/NativeScript/blob/cc97a1680009f1bf6dbf97c421f6e8dc535295b5/nativescript-core/ui/core/view/view.android.ts#L339
Issue Analytics
- State:
- Created 4 years ago
- Reactions:2
- Comments:10 (1 by maintainers)
@JuanDeLeon i keep on modyfing the node modules files for now 😒
Actually found the reason for the bug and it is not what i thought. The issue is with
Frame
callingsuper.onUnloaded
beforedisposeCurrentFragment
https://github.com/NativeScript/NativeScript/blob/cc97a1680009f1bf6dbf97c421f6e8dc535295b5/nativescript-core/ui/frame/frame.android.ts#L250Doing so
_manager
is set to null but then after indisposeCurrentFragment
, a call tothis._getFragmentManager
is made. At that point there is_manager
anymore and so the root manager is returned. Inversing the order inFrame.onUnloaded
solves the issue.