init fragmentactivity以编程方式使用单个片段

gcmastyq  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(186)

我尝试向活动添加一个片段,以避免声明布局xml。我在做什么

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    getSupportFragmentManager().beginTransaction()
            .add(android.R.id.content, new mFragment()).commit();
}

但它崩溃了:

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

有没有一个简短的形式来避免这个错误,或者我必须恢复之前的内容布局,并删除他们的所有意见?谢谢
编辑碎片代码:

public class mFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View result= inflater.inflate(R.layout.activity_main, container);
        return result;
    }

}
tcbh2hod

tcbh2hod1#

更改:

View result= inflater.inflate(R.layout.activity_main, container);

收件人:

View result= inflater.inflate(R.layout.activity_main, container, false);
xpcnnkqh

xpcnnkqh2#

在充气时尝试以下代码。

View result= inflater.inflate(R.layout.activity_main, container, false);

这将避免在默认情况下将视图添加到父视图。通过使用其他方法,它将在默认情况下添加父级。因此,当您尝试动态添加它时,它将抛出上述异常。

相关问题