[英]how to add view to fragment in onCreate
我在具有多个片段的Activity中使用ViewPager
。 在我的Activity的onCreate
方法中,我想向这些片段之一添加多个视图,以便可以在开始时看到它们。 问题是我找不到访问该片段的方法。 怎么做? 我试图以这种方式访问该片段的RecyclerView
:
public class CaafeFragment extends Fragment {
private RecyclerView recyclerView = null;
public CaafeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_caafe, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.caafeRecyclerView);
return view;
}
public RecyclerView getRecyclerView() {
return (RecyclerView) getView().findViewById(R.id.caafeRecyclerView);
}
}
但是当我从活动的onCreate()
调用getRecyclerView()
时,它返回null
//活动
public void onCreate()
{
.
.
.
CaafeFragment caafeFragment=new CaafeFragment();
caafeRecyclerView = caafeFragment.getRecyclerView(); // here it returns null
}
调用onCreate()
(在Fragment中)之后,将调用Fragment的onCreateView()
,因为在onCreate()方法中声明了recycleview时,这会引发错误。
检查onCreate()和onCreateView()的区别以获取更多详细信息。
ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
fragment.<specific_function_name>();
CaafeFragment caafeFragment=new CaafeFragment();
caafeFragment没有指向任何东西,它应该引用一个片段,这一行只是创建片段对象。 您正在尝试获取不包含的内容。 您应该指定该对象包含哪个片段:
CaafeFragment caafeFragment=(CaafeFragment) getFragmentManager().findFragmentById(R.id.YOUR_FRAGMENT_ID);
caafeRecyclerView = caafeFragment.getRecyclerView();
现在,caafeFragment对象包含您可以访问的内容。
编辑
您应该返回通过OnCreate()中的“视图”设置的private RecyclerView recyclerView
对象,
在getRecyclerView()中
替换
返回(RecyclerView)getView()。findViewById(R.id.caafeRecyclerView);
通过:
public RecyclerView getRecyclerView() {
return recyclerView;
}
这里可以确定的是recyclerView对象保存已实例化的视图,并且可以跟踪此行以确保在onCreate()中,
recyclerView = (RecyclerView) view.findViewById(R.id.caafeRecyclerView);
是否有价值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.