我正在将一个 Activity 更改为一个 Fragment,并在我膨胀 RecyclerView 后立即收到以下错误。
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
----> View rootView = inflater.inflate(R.layout.layout_containing_recyclerview,
container, false);
java.lang.IllegalStateException: RecyclerView has no LayoutManager
在我将 Activity 更改为 Fragment 之前,膨胀进行得很好。
一些进一步的研究表明,从 recyclerview 布局中删除我所有的子元素有助于解决问题。但是我不明白为什么这会改变任何事情以及为什么它确实适用于以前的 Activity 。
有效
<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>
不起作用
<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>
我在这里遗漏了什么吗?
最佳答案
这个问题已经很老了,但是为了仍然面临这个问题的人们的利益,我想我会留下一个答案。我刚刚学习 Android 开发,这个问题令人沮丧。后来我发现你不应该在 RecyclerView
下添加任何 View 或 View 组。 .您希望在 RecyclerView
下显示的布局需要在独立的资源文件中单独定义。
然后在适配器实现中(扩展 RecyclerView.Adapter<>
的那个,在覆盖方法 public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
中,当您为 View 扩充布局时(这是为回收站 View 的每个项目扩充布局),您可以指定您创建的上述单独布局。Android 然后为需要添加到回收站 View 的每个项目扩充此布局。
This article帮助我清楚地看到了这一点。
关于android - java.lang.IllegalStateException : RecyclerView has no LayoutManager in Fragment 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27563853/