以编程方式使用单个片段初始化FragmentActivity

时间:2012-08-24 11:33:35

标签: java android android-fragments

我要在活动中添加一个片段,以避免声明布局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.

是否有一个简短的表单来避免此错误,或者我必须恢复内容布局并删除所有视图?感谢

编辑mFragment代码:

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;
    }

}

2 个答案:

答案 0 :(得分:3)

在充气时尝试以下代码。

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

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

答案 1 :(得分:1)

变化:

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

要:

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