我正在尝试从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加载布局?
答案 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();
}