ListView 为空,为什么?
ListView is null, why?
在一个片段中,我试图建立一个列表视图。在 onCreateView()
中:
mFindFriendsOptionsListView = (ListView) view.findViewById(R.id.find_friends_list_view);
mFindFriendsOptionsAdapter = new FindFriendsOptionsAdapter(mFindFriendOptionIconIds, mFindFriendOptionTitles, mFindFriendOptionDescription);
mFindFriendsOptionsListView.setAdapter(mFindFriendsOptionsAdapter);
这是列表视图的 xml:
<ListView
android:id="@+id/find_friends_options_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:layout_alignParentTop="true"
android:divider="#999999"
android:dividerHeight="1dp"/>
这是列表元素 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:id="@+id/option_icon_image_view"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option_title_text_view"
tools:text="Contacts"
android:textSize="18sp"
android:layout_marginBottom="6dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option_description_text_view"
tools:text="Upload contacts to be your friends"
android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:id="@+id/arrow_image_view"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="8dp"
android:layout_marginEnd="8dp" />
</RelativeLayout>
这是堆栈跟踪:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at com.hb.birthpay.fragment.FindFriendFragment.onCreateView(FindFriendFragment.java:66)
我已调试,字段 mFindFriendOptionsListView
是 null
,即使我使用 findViewById()
设置它。为什么 ListView 字段为空,我该如何解决这个问题,这样我就不会再得到 java.lang.NullPointerException
?
我猜是因为它有一个错误的 ID find_friends_options_list_view
,而你得到的是这个 ID:
mFindFriendsOptionsListView = (ListView) view.findViewById(R.id.find_friends_list_view);
更改其中一个以对应另一个。养成复制和粘贴这些东西的习惯,否则你会过得很糟糕。
在一个片段中,我试图建立一个列表视图。在 onCreateView()
中:
mFindFriendsOptionsListView = (ListView) view.findViewById(R.id.find_friends_list_view);
mFindFriendsOptionsAdapter = new FindFriendsOptionsAdapter(mFindFriendOptionIconIds, mFindFriendOptionTitles, mFindFriendOptionDescription);
mFindFriendsOptionsListView.setAdapter(mFindFriendsOptionsAdapter);
这是列表视图的 xml:
<ListView
android:id="@+id/find_friends_options_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:layout_alignParentTop="true"
android:divider="#999999"
android:dividerHeight="1dp"/>
这是列表元素 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:id="@+id/option_icon_image_view"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option_title_text_view"
tools:text="Contacts"
android:textSize="18sp"
android:layout_marginBottom="6dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option_description_text_view"
tools:text="Upload contacts to be your friends"
android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:id="@+id/arrow_image_view"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="8dp"
android:layout_marginEnd="8dp" />
</RelativeLayout>
这是堆栈跟踪:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at com.hb.birthpay.fragment.FindFriendFragment.onCreateView(FindFriendFragment.java:66)
我已调试,字段 mFindFriendOptionsListView
是 null
,即使我使用 findViewById()
设置它。为什么 ListView 字段为空,我该如何解决这个问题,这样我就不会再得到 java.lang.NullPointerException
?
我猜是因为它有一个错误的 ID find_friends_options_list_view
,而你得到的是这个 ID:
mFindFriendsOptionsListView = (ListView) view.findViewById(R.id.find_friends_list_view);
更改其中一个以对应另一个。养成复制和粘贴这些东西的习惯,否则你会过得很糟糕。