getRecyclerView返回null对象

时间:2015-12-16 08:55:42

标签: android layout android-recyclerview

我正在尝试从Fragment的代码创建一个View,我以标准的方式让它膨胀。在Fragment的onCreateView中我改变了

    View view = inflater.inflate(R.layout.list_layout, container, false);
    mDragListView = (DragListView) view.findViewById(dlid); //R.id.drag_list_view
    mDragListView.getRecyclerView().setVerticalScrollBarEnabled(true);

    RelativeLayout rl = new RelativeLayout(getActivity());
    DragListView dlv = new DragListView(getActivity());
    int dlid = View.generateViewId();
    dlv.setId(dlid);
    rl.addView(dlv);
    View view = rl;
    mDragListView = (DragListView) view.findViewById(dlid); 
    mDragListView.getRecyclerView().setVerticalScrollBarEnabled(true);

,list_layout为

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:id ="@+id/viewer_layout">

<com.woxthebox.draglistview.DragListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drag_list_view"
    android:layout_width="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_height="match_parent"/>

在第二个版本中它会抛出声明的错误,getRecyclerView()返回一个nullobject,它在第一个版本中工作。

帮助表示赞赏和欢呼

编辑:当我在ClassToBeImported.class的“方法”中对其进行充气时,是否可以通过this加载布局?

1 个答案:

答案 0 :(得分:0)

你没有打电话

inflater.inflate(R.layout.list_layout, container, false);

在新版本中。没有它,所有布局元素都将为null。

修改 由于您已经有对DragListView的引用,因此您可以使用而不是调用

view.findViewById(dlid); 

同样从rl方法返回onCreateView

<强> EDIT2

如果您有DragListView实现的本地副本,请尝试在构造函数中添加对onFinishInflate的调用,以便在从代码创建时也可以。

public DragListView(Context context) {
        super(context);
        onFinishInflate();
    }