片段中 RecyclerView 的 NullPointerException

Posted

技术标签:

【中文标题】片段中 RecyclerView 的 NullPointerException【英文标题】:NullPointerException for RecyclerView In fragment 【发布时间】:2015-05-14 09:30:23 【问题描述】:

尝试使用片段内的 recyclerview 实现卡片列表。每次我尝试打开片段时,它都会崩溃。我正在关注本教程https://developer.android.com/training/material/lists-cards.html#Dependencies 和这个http://code.tutsplus.com/tutorials/getting-started-with-recyclerview-and-cardview-on-android--cms-23465

Logcat 崩溃的地方。

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)”

circles_tab.xml sn-p

<android.support.v7.widget.RecyclerView
    android:id="@+id/circleList"
    android:layout_
    android:layout_
    android:layout_marginLeft="12dp"
    android:layout_marginRight="12dp"
    android:layout_marginTop="12dp"/>

圆圈片段

public class CirclesFragment extends Fragment 

public ArrayList<String> circles = new ArrayList<String>();
public CharSequence[] circlesList;
public String[] circlesArray = new String[circles.size()];
private List<Person> persons;


private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;

ButtonFloat FAB;
Dialog dialog;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    View v =inflater.inflate(R.layout.circles_tab,container,false);

    // Create Cards list

    mRecyclerView = (RecyclerView)getActivity().findViewById(R.id.circleList);
    mRecyclerView.setHasFixedSize(false);
    mLayoutManager = new LinearLayoutManager(getActivity());
    mRecyclerView.setLayoutManager(mLayoutManager);
    initializeData();
    mAdapter  = new RVAdapter(persons);
    mRecyclerView.setAdapter(mAdapter);

    return v;


private void initializeData()
    persons = new ArrayList<>();
    persons.add(new Person("Peter Parker", R.drawable.logo));
    persons.add(new Person("Miles Morales",R.drawable.logo));
    persons.add(new Person("Oliver Queen", R.drawable.logo));

这个话题有很多类似的问题,但大部分都没有解决。任何帮助将不胜感激。

谢谢大家

【问题讨论】:

【参考方案1】:

改变

 mRecyclerView = (RecyclerView)getActivity().findViewById(R.id.circleList);

 mRecyclerView = (RecyclerView)v.findViewById(R.id.circleList);

【讨论】:

以上是关于片段中 RecyclerView 的 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

片段中 RecyclerView 的 NullPointerException

片段中的recyclerview的“RecyclerView:没有附加适配器;跳过布局”[重复]

Android:RecyclerView 不显示片段中的列表项

片段没有被 RecyclerView 膨胀

如何从 recyclerview 片段传递到另一个 recyclerview 片段

RecyclerView 项目中的片段替换