【问题标题】:how to add view to fragment in onCreate如何在onCreate中将视图添加到片段
【发布时间】:2016-02-24 00:05:08
【问题描述】:

我在我的活动中使用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
}

【问题讨论】:

  • 请在您尝试从活动访问回收站视图的位置发布代码
  • 确定它返回null,片段中的onCreateView没有被调用。
  • @JörnBuitink,是的,你是对的,但解决方案是什么?!!!

标签: android android-activity fragment


【解决方案1】:

在调用onCreate() 后(在Fragment 中),调用Fragment 的onCreateView() 因为这是您在onCreate() 方法中声明了recycleview。

查看onCreate(), onCreateView() difference了解更多详情。

例如:

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
fragment.<specific_function_name>(); 

【讨论】:

【解决方案2】:
CaafeFragment caafeFragment=new CaafeFragment();

caafeFragment 没有指向任何东西,它应该引用一个片段,这一行只是创建片段对象。你试图得到它不包含的东西。您应该指定该对象包含哪个片段:

CaafeFragment caafeFragment=(CaafeFragment) getFragmentManager().findFragmentById(R.id.YOUR_FRAGMENT_ID);

caafeRecyclerView = caafeFragment.getRecyclerView();

现在 caafeFragment 对象包含您可以从中访问的内容。

编辑

您应该返回您通过 OnCreate() 中的“视图”设置的 private RecyclerView recyclerView 对象,

在getRecyclerView()中

替换 return (RecyclerView) getView().findViewById(R.id.caafeRecyclerView); 作者:

public RecyclerView getRecyclerView() {
    return recyclerView;
}

这里可以确定的是,recyclerView 对象持有已实例化的视图,并且可以跟踪这一行以确保在 onCreate() 中,

 recyclerView = (RecyclerView) view.findViewById(R.id.caafeRecyclerView);

有没有价值。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
相关资源
最近更新 更多