-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Environment
- CLI: 7.0.10
- Cross-platform modules: 7.0.13
- Android Runtime: 7.0.1
Describe the bug
If TabView is nested inside BottomNavigation, and you try to navigate to another page, the app crashes.
System.err: An uncaught Exception occurred on "main" thread.
System.err: Calling js method onViewAttachedToWindow failed
System.err: Error: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
System.err:
System.err: StackTrace:
System.err: commitCurrentTransaction(file: node_modules/@nativescript/core/ui/bottom-navigation/index.android.js:369:0)
System.err: at changeTab(file: node_modules/@nativescript/core/ui/bottom-navigation/index.android.js:387:0)
System.err: at _onAttachedToWindow(file: node_modules/@nativescript/core/ui/bottom-navigation/index.android.js:319:0)
System.err: at AttachListener.onViewAttachedToWindow(file: node_modules/@nativescript/core/ui/bottom-navigation/index.android.js:163:0)
System.err: at com.tns.Runtime.callJSMethodNative(Native Method)
System.err: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1302)
System.err: at com.tns.Runtime.callJSMethodImpl(Runtime.java:1188)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1175)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1153)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1149)
System.err: at com.tns.gen.java.lang.Object_vendor_112166_28_AttachListener.onViewAttachedToWindow(Object_vendor_112166_28_AttachListener.java:18)
System.err: at android.view.View.dispatchAttachedToWindow(View.java:19712)
System.err: at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3455)
System.err: at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3462)
System.err: at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3462)
System.err: at android.view.ViewGroup.addViewInner(ViewGroup.java:5174)
System.err: at android.view.ViewGroup.addView(ViewGroup.java:4960)
System.err: at android.view.ViewGroup.addView(ViewGroup.java:4900)
System.err: at android.view.ViewGroup.addView(ViewGroup.java:4873)
System.err: at android.view.ViewOverlay$OverlayViewGroup.add(ViewOverlay.java:208)
System.err: at android.view.ViewGroupOverlay.add(ViewGroupOverlay.java:72)
System.err: at androidx.transition.ViewGroupOverlayApi18.add(ViewGroupOverlayApi18.java:48)
System.err: at androidx.transition.Visibility.onDisappear(Visibility.java:428)
System.err: at androidx.transition.Visibility.createAnimator(Visibility.java:257)
System.err: at androidx.transition.Transition.createAnimators(Transition.java:747)
System.err: at androidx.transition.TransitionSet.createAnimators(TransitionSet.java:480)
System.err: at androidx.transition.Transition.playTransition(Transition.java:1821)
System.err: at androidx.transition.TransitionManager$MultiListener.onPreDraw(TransitionManager.java:301)
System.err: at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1088)
System.err: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2983)
System.err: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1930)
System.err: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7988)
System.err: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1154)
System.err: at android.view.Choreographer.doCallbacks(Choreographer.java:977)
System.err: at android.view.Choreographer.doFrame(Choreographer.java:893)
System.err: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1139)
System.err: at android.os.Handler.handleCallback(Handler.java:883)
System.err: at android.os.Handler.dispatchMessage(Handler.java:100)
System.err: at android.os.Looper.loop(Looper.java:214)
System.err: at android.app.ActivityThread.main(ActivityThread.java:7682)
System.err: at java.lang.reflect.Method.invoke(Native Method)
System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
System.err: Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
System.err: at android.view.ViewGroup.addViewInner(ViewGroup.java:5131)
System.err: at android.view.ViewGroup.addView(ViewGroup.java:4960)
System.err: at androidx.viewpager.widget.ViewPager.addView(ViewPager.java:1485)
System.err: at android.view.ViewGroup.addView(ViewGroup.java:4900)
System.err: at android.view.ViewGroup.addView(ViewGroup.java:4873)
System.err: at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:326)
System.err: at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1199)
System.err: at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1368)
System.err: at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1446)
System.err: at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1509)
System.err: at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2637)
System.err: at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2589)
System.err: at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2723)
System.err: at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346)
System.err: at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1200)
System.err: at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1368)
System.err: at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1446)
System.err: at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:442)
System.err: at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2181)
System.err: at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2004)
System.err: at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1959)
System.err: at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1830)
System.err: at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:303)
System.err: ... 39 more
To Reproduce
- Create new NS project (with angular)
- Create 2 pages (page-1 and page-2)
- On page-1 create BottomNavigation
- Inside one of the BottomNavigation tabs add button that navigates to page-2
- Below the button add TabView
ns run android- Tap the button to navigate to page-2
Expected behavior
Should be able to navigate to page-2
Sample project
I have created sample project with 2 BottomNavigation tabs. Each tab has button that navigates to page-2, but only second tab has TabView. Navigation from first tab works. If you try to navigate from second tab, the error from above occurs.
https://github.com/lbracun/ns-bug
Additional context
I only tried it on Android, don't know if it happens on iOS too.
Tried it on iOS, and it works as intended. So the problem only happens on Android.
Forgot to mention before: i tried to create sample on the playground, but the error didn't show (because of NS 6 i think).
Update:
I also tried using Tabs instead of TabView, but same thing happens.