Skip to content

[Next] Back Navigation crashing the app w/ The specified child already has a parent #6312

@NickIliev

Description

@NickIliev

From @NickIliev on September 14, 2018 14:5

Working with next of tns-core-modules and nativescript-angular and navigating withnsRouterLink and then back with the hardware button is causing a crash.

Steps to reproduce:

JS: NavigationEnd(id: 4, url: '/info', urlAfterRedirects: '/info/app-info')
JS: NavigationEnd(id: 4, url: '/info', urlAfterRedirects: '/info/app-info')
JS: Router Event: Scroll
JS: Scroll(anchor: 'null', position: 'null')
JS: Scroll(anchor: 'null', position: 'null')
System.err: 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:5122)
System.err:     at android.view.ViewGroup.addView(ViewGroup.java:4953)
System.err:     at android.view.ViewGroup.addView(ViewGroup.java:4893)
System.err:     at android.view.ViewGroup.addView(ViewGroup.java:4866)
System.err:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1425)
System.err:     at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750)
System.err:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1819)
System.err:     at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
System.err:     at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590)
System.err:     at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377)
System.err:     at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332)
System.err:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239)
System.err:     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
...

package.json content using next

  "dependencies": {
    "@angular/common": "~6.1.0",
    "@angular/compiler": "~6.1.0",
    "@angular/core": "~6.1.0",
    "@angular/forms": "~6.1.0",
    "@angular/http": "~6.1.0",
    "@angular/platform-browser": "~6.1.0",
    "@angular/platform-browser-dynamic": "~6.1.0",
    "@angular/router": "~6.1.0",
    "nativescript-angular": "^6.2.0-2018-09-14-01",
    "nativescript-app-center": "^1.0.3",
    "nativescript-cardview": "^3.1.1",
    "nativescript-permissions": "^1.2.3",
    "nativescript-plugin-firebase": "^6.8.1",
    "nativescript-social-share": "^1.5.1",
    "nativescript-theme-core": "^1.0.4",
    "nativescript-ui-sidedrawer": "^4.3.0",
    "reflect-metadata": "~0.1.8",
    "rxjs": "^6.0.0",
    "tns-core-modules": "^4.3.0-2018-09-14-01",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular/compiler-cli": "~6.1.0",
    "@ngtools/webpack": "~6.2.0",
    "nativescript-dev-typescript": "~0.7.3",
    "nativescript-dev-webpack": "^0.17.0-2018-09-14-01",
    "tns-platform-declarations": "^4.2.0",
    "typescript": "~2.7.2"
  },

The above case is working as expected with official versions of nativescript-angular and tns-core-modules. The navigation also works when routerExtensions is used ins tead of nsRouterLink

Workaround

this._routerExtensions.navigate(
                [path], {
                transition: {
                    name: "fade",
                    duration: 300,
                }
            }
        )

Copied from original issue: NativeScript/nativescript-angular#1516

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions