带有自定义 ListView 的片段不断抛出错误

Fragment with custom ListView keeps throwing error inflating

我有一个 ListView,我正试图将其转换为 MainActivity 中的片段。这曾经在上周工作,但显然我做了一些改变,现在只是让它不断弹出这个错误:

android.view.InflateException: Binary XML file line #29: Error inflating class fragment

通过调试发现问题出在ListView的创建行:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    //  (more code)

    ListView listView = (ListView) getView().findViewById(
            R.id.records_listview);

    //  (more code)

    return inflater.inflate(R.layout.fragment_list, container, false);

}

xml 文件 records_listview 是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

   <ListView
        android:id="@+id/records_listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/records_btn_add"
        android:layout_marginTop="20dp" />

</RelativeLayout>

我完全惊呆了,因为这曾经有效。如果将 ListView 放在 Activity 中,它会正常运行。此视图上也有按钮,这就是我使用 Fragment 而不是 ListFragment 的原因。

getView() 方法将在 onCreateView() 中 return 为 null,因为 View 你 return 从该方法中设置为 FragmentView。更改方法如下:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_list, container, false);
    ...
    ListView listView = (ListView) view.findViewById(R.id.records_listview);
    ...
    return view;
}