fragment.getview()在活动中调用时始终返回null

时间:2014-06-14 06:47:22

标签: android view null fragment getview

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

例如: 在我的活动中:

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,我们如何引用片段的视图?

提前致谢

2 个答案:

答案 0 :(得分:0)

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

frag = new NewBooksFrag();

不会调用onCreateView()您应该将片段附加到活动中。 使用FragmentManager来执行此操作。

答案 1 :(得分: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();

如需了解更多信息,请访问官方guide