【问题标题】:NullPointerException when adding RecyclerView to Fragment将 RecyclerView 添加到 Fragment 时出现 NullPointerException
【发布时间】:2016-03-24 03:46:42
【问题描述】:

在我的片段的 onCreateView 方法中,我正在膨胀一个包含 RecyclerView 的布局。但是,当我尝试引用该视图时,我在以下行收到 NullPointerException:

mRecyclerView.setLayoutManager(mStaggeredLayoutManager);

我做错了什么?

这是我的代码:

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstance){
        final StaggeredGridLayoutManager mStaggeredLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);

        mRecyclerView = (RecyclerView)getActivity().findViewById(R.id.list);
        mRecyclerView.setLayoutManager(mStaggeredLayoutManager);

        mRecyclerView.setHasFixedSize(true); //Data size is fixed - improves performance
        mAdapter = new TravelListAdapter(getActivity());
        mRecyclerView.setAdapter(mAdapter);
        return inflater.inflate(R.layout.start_fragment,container,false);
}

【问题讨论】:

  • 请提供您的错误日志。

标签: android android-fragments android-recyclerview android-inflate


【解决方案1】:

你正在做getActivity.findViewById(),这是行不通的。您刚刚创建了视图,但它尚未附加到活动。为此,您必须在 Fragment 的视图中找到视图,而不是在 Activity 的视图中。

首先,扩充片段的视图,然后执行inflatedView.findViewById(R.id.list)

例子:

public View onCreateView(...){
    View inflatedView = inflater.inflate(R.layout.start_fragment, container, false);

    mRecyclerView = (RecyclerView) inflatedView.findViewById(R.id.list);

    return inflatedView;
}

【讨论】:

    【解决方案2】:
            @Override
            public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
            final StaggeredGridLayoutManager mStaggeredLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
    mRecyclerView = (RecyclerView) view.findViewById(R.id.list);
    mRecyclerView.setLayoutManager(mStaggeredLayoutManager);
    mRecyclerView.setHasFixedSize(true);
    mAdapter = new TravelListAdapter(getActivity());
    mRecyclerView.setAdapter(mAdapter);
    super.onViewCreated(view, savedInstanceState);
    
            }
    

    这就是我要做的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 2016-04-16
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      相关资源
      最近更新 更多