Java RecyclerView NullPointerException

Java RecyclerView NullPointerException,java,android,Java,Android,此刻,我正和回收站的人胡闹。一直以来,我都会遇到一些空指针异常,但我找不到原因 java.lang.RuntimeException: Unable to start activity ComponentInfo{de.lueth.erik.birthdays/de.lueth.erik.birthdays.TodaysBirthdays.TodaysBirthdaysActivity}: java.lang.NullPointerException: Attempt to invoke vir

此刻,我正和回收站的人胡闹。一直以来,我都会遇到一些空指针异常,但我找不到原因

java.lang.RuntimeException: Unable to start activity ComponentInfo{de.lueth.erik.birthdays/de.lueth.erik.birthdays.TodaysBirthdays.TodaysBirthdaysActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
        at android.app.ActivityThread.access$800(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5349)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference
        at de.lueth.erik.birthdays.TodaysBirthdays.TodaysBirthdaysActivity.onCreate(TodaysBirthdaysActivity.java:23)
        at android.app.Activity.performCreate(Activity.java:6020)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2284)...
这是我今天的活动课 onCreate部分看起来就像Google在其RecyclerView教程中展示的部分

public class TodaysBirthdaysActivity extends Activity{
    private RecyclerView recList;
    private RecyclerView.Adapter adp;
    private RecyclerView.LayoutManager llm;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_birthday_list);
    recList = (RecyclerView) findViewById(R.id.cardList);
    recList.setHasFixedSize(true);
    llm = new LinearLayoutManager(this);
    recList.setLayoutManager(llm);

    adp = new Adapter(createList(30));
    recList.setAdapter(adp);
}

private List<ContactInfo> createList(int size) {

    List<ContactInfo> result = new ArrayList<ContactInfo>();
    for (int i=1; i <= size; i++) {
        ContactInfo ci = new ContactInfo();
        ci.name = ContactInfo.NAME_PREFIX + i;
        ci.surname = ContactInfo.SURNAME_PREFIX + i;
        ci.birthday = ContactInfo.Birthday_PREFIX + i ;

        result.add(ci);

    }

    return result;
}}
这里是我的ContentViewHolder.java

public class ContactViewHolder extends RecyclerView.ViewHolder {
protected TextView vName;
protected TextView vSurname;
protected TextView vBirthday;
protected TextView vTitle;

public ContactViewHolder(View v) {
    super(v);
    vName =  (TextView) v.findViewById(R.id.txtName);
    vSurname = (TextView)  v.findViewById(R.id.txtSurname);
    vBirthday = (TextView)  v.findViewById(R.id.txtBirthday);
    vTitle = (TextView) v.findViewById(R.id.title);
}}
和卡的xml联系_card.xml

<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardCornerRadius="4dp"
android:layout_margin="5dp">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:background="@color/cardview_dark_background"
        android:text="contact det"
        android:gravity="center_vertical"
        android:textColor="@android:color/white"
        android:textSize="14dp"/>

    <TextView
        android:id="@+id/txtName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name"
        android:gravity="center_vertical"
        android:textSize="10dp"
        android:layout_below="@id/title"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"/>

    <TextView
        android:id="@+id/txtSurname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Surname"
        android:gravity="center_vertical"
        android:textSize="10dp"
        android:layout_below="@id/txtName"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"/>

    <TextView
        android:id="@+id/txtBirthday"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Birthday"
        android:textSize="10dp"
        android:layout_marginTop="10dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="150dp"
        android:layout_alignBaseline="@id/txtName"/>

</RelativeLayout> </android.support.v7.widget.CardView>

都在您的logcat输出中:

at de.lueth.erik.birthdays.TodaysBirthdays.TodaysBirthdaysActivity.onCreate(TodaysBirthdaysActivity.java:23)

这行代码为您提供了NPE。也就是说,变量
recList
null
。为什么?很可能是因为在布局
R.layout.activity\u birth\u list
中没有id为
R.id.cardList
的对象

都在您的logcat输出中:

at de.lueth.erik.birthdays.TodaysBirthdays.TodaysBirthdaysActivity.onCreate(TodaysBirthdaysActivity.java:23)

这行代码为您提供了NPE。也就是说,变量
recList
null
。为什么?很可能是因为在布局
R.layout.activity\u birth\u list
中没有id为
R.id.cardList
的对象

再次检查,第三个xml文件名为activity.xml或activity\u birth\u list.xml?正如您提供的代码所示,它应该命名为activity\u birthday\u list.xml它命名为activity\u birthday\u list。xml@xwhyLikeThis我在createList()中添加了一些代码,它是否正在消亡[试图确定哪一行是第23行]?ContactInfo.birth\u前缀是否包含有效数据?请不要添加更多代码。试着去脱水——把范围缩小到问题实际可能出现的地方。再仔细检查一下,第三个xml文件名为activity.xml或activity\u birth\u list.xml?正如您提供的代码所示,它应该命名为activity\u birthday\u list.xml它命名为activity\u birthday\u list。xml@xwhyLikeThis我在createList()中添加了一些代码,它是否正在消亡[试图确定哪一行是第23行]?ContactInfo.birth\u前缀是否包含有效数据?请不要添加更多代码。试着让它脱水——把范围缩小到问题实际可能出现的地方。thx,我自己刚发现它。。。我有两个名称几乎相同的布局文件,我意外地认为我用作布局的那个是正确的…thx,我自己刚刚发现它。。。我有两个名称几乎相同的布局文件,我意外地认为我用作布局的是正确的一个。。。
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardCornerRadius="4dp"
android:layout_margin="5dp">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:background="@color/cardview_dark_background"
        android:text="contact det"
        android:gravity="center_vertical"
        android:textColor="@android:color/white"
        android:textSize="14dp"/>

    <TextView
        android:id="@+id/txtName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name"
        android:gravity="center_vertical"
        android:textSize="10dp"
        android:layout_below="@id/title"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"/>

    <TextView
        android:id="@+id/txtSurname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Surname"
        android:gravity="center_vertical"
        android:textSize="10dp"
        android:layout_below="@id/txtName"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"/>

    <TextView
        android:id="@+id/txtBirthday"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Birthday"
        android:textSize="10dp"
        android:layout_marginTop="10dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="150dp"
        android:layout_alignBaseline="@id/txtName"/>

</RelativeLayout> </android.support.v7.widget.CardView>
at de.lueth.erik.birthdays.TodaysBirthdays.TodaysBirthdaysActivity.onCreate(TodaysBirthdaysActivity.java:23)