0

我有这个问题,尽管在片段内部覆盖了 onCreateView 方法,但在另一个活动中调用时,fragment.getView() 总是返回 null。

例如:在我的活动中:

frag = new NewBooksFrag();

在我的片段中:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view = null;

    view = inflater.inflate(R.layout.new_book_frag, container,true);

    return view;
}

但是当我打电话时

frag.getView()

它仍然返回 null。知道为什么会这样吗?因为在android文档中,它清楚地说明了getView():

“获取片段布局的根视图(onCreateView(LayoutInflater, ViewGroup, Bundle) 返回的那个),如果提供的话。”

如果返回 null,我们如何引用片段的视图?

提前致谢

4

2 回答 2

0

如果你没有错过发布部分代码

frag = new NewBooksFrag();

不会打电话给onCreateView()你应该将片段附加到活动中。用来FragmentManager做那个。

于 2014-06-14T07:18:34.440 回答
0

正如 Visamanath 所提到的,您不会将片段添加到活动中,而只需创建它。

要将片段添加到活动中,您可以通过将其实现为 xml 中的视图来实现:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="com.example.android.fragments.NewBooksFrag"
              android:id="@+id/new_books_fragment"
              android:layout_width="match_parent"
              android:layout_height="match_parent" />

</LinearLayout>

或者通过在代码中动态添加:

        NewBooksFrag frag = new NewBooksFrag();

        getSupportFragmentManager().beginTransaction()
                .add(R.id.fragment_container, frag ).commit();

更多详情请访问官方指南

于 2014-06-14T08:58:30.970 回答