将 RecyclerView 添加到 Fragment 时出现 NullPointerException

NullPointerException when adding RecyclerView to Fragment

在我片段的 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);
}

你正在做 getActivity.findViewById(),这是行不通的。您刚刚创建了视图,但它尚未附加到 activity。为此,您必须在片段的视图中找到视图,而不是 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;
}
        @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);

        }

这就是我要做的