繁体   English   中英

如何在onCreate中向片段添加视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM