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)