Fragment.onCreateView具有null容器

时间:2012-04-12 01:11:16

标签: android android-layout android-fragments

以下是在Android 1.6上运行,所以我正在使用兼容包进行分片。在下面的TestFragment是一个静态嵌套类:

public class FragmentTestActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

public static class TestFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        TextView result = new TextView(getActivity());
        result.setText("Hello TestFragment");
        return result;
    }
}

}

main.xml文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<fragment class="com.test.FragmentTestActivity$TestFragment"
        android:id="@+id/test"
        android:layout_width="fill_parent" android:layout_height="fill_parent" />
</FrameLayout>

奇怪的是onCreateView中的容器参数是null

现在,如果我以编程方式添加片段(只需更改Activity的onCreate方法),则容器不再为null。为什么呢?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Fragment frag = new TestFragment();
    getSupportFragmentManager().beginTransaction().add(android.R.id.content, frag).commit();
}

1 个答案:

答案 0 :(得分:0)

文档提到它可以为null:

  

公共视图   onCreateView(LayoutInflater   inflater,ViewGroup容器,Bundle savedInstanceState)

     

[...]

     

容器: 如果非空 ,则这是父视图   应该附加片段的UI。 该片段不应添加   查看自己 ,但这可用于生成的LayoutParams   图。

要明确:你不应该做container.addView(...)

之类的事情