首页 > 解决方案 > 升级后的 Fragment IllegalStateException

问题描述

目前,我androidx.fragment:fragment:1.1.0在升级到最新的片段 sdkandroidx.fragment:fragment:1.2.4应用程序后正在使用崩溃。相同的代码在 1.1.0 上运行,但在 1.2.4 崩溃报告上崩溃

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
    at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:4745)
    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4696)
    at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:4647)
    at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:46)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
 Caused by: 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:5235)
    at android.view.ViewGroup.addView(ViewGroup.java:5064)

标签: androidandroid-fragments

解决方案


如果您在片段的 onCreateView 方法中使用类似下面的内容

 View view = inflater.inflate(R.layout.fragment_layout, container);

然后用这个替换这个

View view = inflater.inflate(R.layout.fragment_layout, container,false);

推荐阅读