java.lang.IllegalStateException:RecyclerView在Fragment中没有LayoutManager

Edw*_*aak 13 android android-fragments android-5.0-lollipop android-recyclerview

我正在将Activity更改为Fragment,并在我充实RecyclerView后立即收到以下错误.

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

    ----> View rootView = inflater.inflate(R.layout.layout_containing_recyclerview, 
                    container, false); 
Run Code Online (Sandbox Code Playgroud)

java.lang.IllegalStateException:RecyclerView没有LayoutManager

在我将Activity变为Fragment之前,inflate就没事了.

一些进一步的研究表明,从recyclerview布局中删除所有子元素有助于解决问题.但是我不明白为什么这会改变任何事情以及为什么它之前的工作与一项活动有关.

作品

<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/my_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"   
    android:scrollbars="vertical" >    

</android.support.v7.widget.RecyclerView>
Run Code Online (Sandbox Code Playgroud)

什么都不行

<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/my_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"   
    android:scrollbars="vertical" >    


<View
    android:id="@+id/randomview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center" />

</android.support.v7.widget.RecyclerView>
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

Suh*_*has 42

这个问题已经很老了,但是为了让人们仍然面临这个问题,我想我会留下答案.我刚学习Android开发,这个问题令人沮丧.后来我发现你不应该添加任何视图或查看组RecyclerView.您希望RecyclerView在独立资源文件中单独定义的布局.

然后在适配器实现中(扩展的那个RecyclerView.Adapter<>,在public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)为视图布局膨胀时,在重写方法中扩展(这会为回收器视图的每个项目的布局增加),您可以指定您创建的上述单独布局.然后为需要添加到回收站视图的每个项目扩充此布局.

这篇文章让我清楚地看到了这一点.


Nik*_*ski 3

RecyclerView是一个ViewGroup需要LayoutManager对其子项进行布局的对象。在您的情况下,RecyclerView需要将子视图传递给LayoutManager,但我不确定是否可以将 View 的 xml 引用传递给LayoutManager