【问题标题】:Pressing back in a nested view throws the error "The specified child already has a parent."在嵌套视图中按回会引发错误“指定的子级已经有父级”。
【发布时间】:2019-12-07 04:52:57
【问题描述】:

我使用BottomNavigation 设置了嵌套视图,用户可以通过该视图从ListView 导航到详细信息“页面”之一。我已经尝试过手动路由以及 Vue Navigator

这是我的应用程序的布局。

<!--Main.vue-->
  <Page>
    <BottomNavigation>
      <TabStrip class="bottom-navigation">
        ...
      </TabStrip>

      <TabContentItem>
        <Frame>
          <Dashboard />
        </Frame>
      </TabContentItem>

      <TabContentItem>
        <Frame>
          <Finance />
        </Frame>
      </TabContentItem>

      <TabContentItem>
        <Frame>
          <Profile />
        </Frame>
      </TabContentItem>
    </BottomNavigation>
  </Page>

<!--Finance.vue-->
  <Page>
    <Tabs>
      <TabStrip class="tab-strip">
        ...
      </TabStrip>

      <TabContentItem>
        <ListView
          for="item in items"
          @itemTap="$navigateTo(detailPage)"
          class="list-group"
          height="100%"
        >
          ...
        </ListView>
      </TabContentItem>

      <TabContentItem>
        ...
      </TabContentItem>
    </Tabs>
  </Page>


<!--ItemDetails.vue-->
  <Page>
    <ActionBar class="action-bar">
        <NavigationButton @tap="$navigateBack" android.systemIcon="ic_menu_back"/>
        <Label class="action-bar-title" :text="item.name"></Label>
    </ActionBar>

    <GridLayout>
        ...
    </GridLayout>
  </Page>


这是按详细信息页面的后退按钮时出现的错误。

System.err: An uncaught Exception occurred on "main" thread.
System.err: The specified child already has a parent. You must call removeView() on the child's parent first.
System.err:
System.err: StackTrace:
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:5042)
System.err:     at android.view.ViewGroup.addView(ViewGroup.java:4873)
System.err:     at android.view.ViewGroup.addView(ViewGroup.java:4813)
System.err:     at android.view.ViewGroup.addView(ViewGroup.java:4786)
System.err:     at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:887)
System.err:     at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
System.err:     at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
System.err:     at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2659)
System.err:     at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManagerImpl.java:2613)
System.err:     at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2624)
System.err:     at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:904)
System.err:     at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
System.err:     at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
System.err:     at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
System.err:     at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
System.err:     at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
System.err:     at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
System.err:     at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
System.err:     at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
System.err:     at android.os.Handler.handleCallback(Handler.java:874)
System.err:     at android.os.Handler.dispatchMessage(Handler.java:100)
System.err:     at android.os.Looper.loop(Looper.java:198)
System.err:     at android.app.ActivityThread.main(ActivityThread.java:6729)
System.err:     at java.lang.reflect.Method.invoke(Native Method)
System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

应用程序崩溃,我无法找出可能导致错误的原因。请帮忙。

【问题讨论】:

  • 请分享一个可以重现问题的最小 Playground 示例。

标签: nativescript nativescript-vue


【解决方案1】:

尝试将核心模块更新到最新版本,它已在 6.1 或 6.2 中修复

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 2020-02-23
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多