我有这个问题,其中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,我们如何引用片段的视图?
提前致谢
答案 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