Fragment.onCreateView 具有空容器

2023-11-21

以下代码在 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 is null.

现在,如果我像这样以编程方式添加片段(只需更改onCreateActivity 的方法)容器不再为空。为什么?

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

文档提到它可以为空:

公众视野创建视图时(布局充气机 充气机、ViewGroup 容器、Bundle savingInstanceState)

[...]

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

需要明确的是:你不应该做类似的事情container.addView(...).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fragment.onCreateView 具有空容器 的相关文章

随机推荐