public open fun detachChild()

in android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt [155:186]


  public open fun detachChild(childRouter: Router<*>) {
    val isChildRemoved = children.remove(childRouter)
    val interactor = childRouter.interactor
    ribRefWatcher.watchDeletedObject(interactor)
    ribRefWatcher.logBreadcrumb(
      "DETACHED",
      childRouter.javaClass.simpleName,
      this.javaClass.simpleName,
    )
    if (savedInstanceState != null) {
      val childrenBundles = savedInstanceState?.getBundleExtra(KEY_CHILD_ROUTERS)
      val childRouterTag = childRouter.tag
      if (childRouterTag != null) {
        childrenBundles?.putBundleExtra(childRouterTag, null)
      } else {
        Rib.getConfiguration()
          .handleNonFatalWarning("A RIB tried to detach a child that was never attached", null)
      }
    }

    triggerRibActionAndEmitEvents(
      childRouter,
      RibActionEmitterType.ROUTER,
      RibEventType.DETACHED,
    ) {
      childRouter.dispatchDetach()
    }

    if (isChildRemoved) {
      RibEvents.emitRouterEvent(RibEventType.DETACHED, childRouter, this)
    }
  }