我在我的应用程序中使用 Jetpack 的导航组件。我有 2 个片段,例如 FirstFragment 和 SecondFragment,并且我在导航图中从第一个片段到第二个片段进行导航。这样一切正常。我想将子片段添加到 FirstFragment。所以在 FirstFragment 类的 onCreateView 方法中我添加了这一行
getChildFragmentManager().beginTransaction().add(R.id.fragment_container, new SimpleFragment()).commit();
这样我在 FirstFragment 中有一个内部片段。从 FirstFragment 导航到 SecondFragment 仍然可以正常工作,但是当我按 SecondFragment 中的后退按钮时,出现此错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.abc.def, PID: 28856
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4937)
at android.view.ViewGroup.addView(ViewGroup.java:4768)
at android.view.ViewGroup.addView(ViewGroup.java:4708)
at android.view.ViewGroup.addView(ViewGroup.java:4681)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1353)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1642)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1736)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1800)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3096)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3050)
at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2688)
如果我按后退按钮或拨打navController.navigateUp()或 ,我会收到此错误navController.popBackStack()。如果我删除该行
getChildFragmentManager().beginTransaction().add(R.id.fragment_container, new SimpleFragment()).commit();
从 FirstFragment 我没有错误,所以这意味着子片段管理器有问题,对吧?这里有什么问题吗?
潇湘沐
哔哔one
相关分类