You must call removeView() on the child's parent first错误!

本文解析了在Android开发中切换Fragment时出现的特定错误——java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 详细介绍了LayoutInflater的inflate方法使用不当导致的问题,并提供了正确的onCreateView实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在切换Fragement的时候出现:错误信息

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

前面已经提到:

LayoutInflater的inflate() 三参方法的第三个参数指示在加载期间,展开的layout是否应当附着到ViewGroup (第二个参数)。传入true会在最后的layout中创建一个多余的view group。
Fragment简单入门
所以使用使用两个参数的时候会报上述错误。
需要最后一个参数为false.

public class FragmentA extends Fragment {

    /**
     *
     * @param inflater  加载fragment的xml布局文件的填充器。其inflate方法可将布局文件转化成View对象
     * @param container 你的fragment layout将要插入的父ViewGroup(来自activity的layout)。
     * @param savedInstanceState 是一个Bundle,如果fragment是被销毁后恢复的,它提供关于fragment的之前的实例的数据()。
     * @return  返回一个View类型的对象
     */
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        return inflater.inflate(R.layout.fragment_a,container,false);
        //第一个参数,是要填充那个。第二个参数是要填充到哪里。可以直接写,传来的父ViewGroup
            //如果第三个参数不写false切换fragment的时候报错误。
       /* You must call removeView() on the child's parent first*/

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值