android – “LayoutManager已经附加到RecyclerView”错误

android – “LayoutManager已经附加到RecyclerView”错误,第1张

概述我试图在布局中有多个RecyclerViews,但是我收到以下错误:“LayoutManager已经附加到RecyclerView” Java代码是: @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstan 我试图在布局中有多个RecyclerVIEws,但是我收到以下错误:“LayoutManager已经附加到RecyclerVIEw”

Java代码是:

@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) {    // Inflate the layout for this fragment    VIEw vIEw = inflater.inflate(R.layout.fragment_squad,container,false);    Activity parentActivity = getActivity();    final ObservableScrollVIEw scrollVIEw = (ObservableScrollVIEw) vIEw.findVIEwByID(R.ID.squad_scrollvIEw);    final RecyclerVIEw gkRecyclerVIEw = (RecyclerVIEw) vIEw.findVIEwByID(R.ID.gk_recycler);    final RecyclerVIEw coachRecyclerVIEw = (RecyclerVIEw) vIEw.findVIEwByID(R.ID.coach_recycler);    coachRecyclerVIEw.setAdapter(new squadRecyclerAdapter(parentActivity,getsquadDummyData(0)));    coachRecyclerVIEw.setLayoutManager(new Mylinearlayoutmanager(parentActivity,linearlayoutmanager.VERTICAL,false));    coachRecyclerVIEw.setHasFixedSize(false);    gkRecyclerVIEw.setAdapter(new squadRecyclerAdapter(parentActivity,getsquadDummyData(1)));    gkRecyclerVIEw.setLayoutManager(new Mylinearlayoutmanager(parentActivity,false));    gkRecyclerVIEw.setHasFixedSize(false);    scrollVIEw.settouchInterceptionVIEwGroup((VIEwGroup) parentActivity.findVIEwByID(R.ID.container));    if (parentActivity instanceof ObservableScrollVIEwCallbacks) {        scrollVIEw.setScrollVIEwCallbacks((ObservableScrollVIEwCallbacks) parentActivity);    }    return vIEw;}

XML布局代码是:

<com.github.ksoichiro.androID.observablescrollvIEw.ObservableScrollVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:ID="@+ID/squad_scrollvIEw"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:layout_margin="@dimen/margin_medium"    >    <linearLayout        androID:ID="@+ID/squad_container"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:background="@drawable/seasons_scrollvIEw"        androID:divIDer="@drawable/nav_bar_divIDer"        androID:elevation="@dimen/card_elevation"        androID:orIEntation="vertical"        androID:showdivIDers="mIDdle">        <linearLayout            androID:ID="@+ID/coach_group"            androID:layout_wIDth="match_parent"            androID:layout_height="wrap_content"            androID:orIEntation="vertical"            androID:paddingBottom="@dimen/margin_small"            androID:paddingleft="@dimen/margin_standard"            androID:paddingRight="@dimen/margin_standard"            androID:paddingtop="@dimen/margin_small">            <TextVIEw                androID:ID="@+ID/squad_coach_header"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="Coach"                androID:textSize="@dimen/text_size_standard" />            <androID.support.v7.Widget.RecyclerVIEw                androID:ID="@+ID/coach_recycler"                androID:layout_wIDth="match_parent"                androID:layout_height="wrap_content"                androID:paddingtop="@dimen/margin_small"                androID:paddingBottom="@dimen/margin_small"                androID:scrollbars="none">            </androID.support.v7.Widget.RecyclerVIEw>        </linearLayout>        <linearLayout            androID:ID="@+ID/gk_group"            androID:layout_wIDth="match_parent"            androID:layout_height="wrap_content"            androID:orIEntation="vertical"            androID:paddingBottom="@dimen/margin_small"            androID:paddingleft="@dimen/margin_standard"            androID:paddingRight="@dimen/margin_standard"            androID:paddingtop="@dimen/margin_small">            <TextVIEw                androID:ID="@+ID/squad_gk_header"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="Goalkeepers"                androID:textSize="@dimen/text_size_standard" />            <androID.support.v7.Widget.RecyclerVIEw                androID:ID="@+ID/gk_recycler"                androID:layout_wIDth="match_parent"                androID:layout_height="wrap_content"                androID:paddingtop="@dimen/margin_small"                androID:paddingBottom="@dimen/margin_small"                androID:scrollbars="none">            </androID.support.v7.Widget.RecyclerVIEw>        </linearLayout>        <linearLayout            androID:ID="@+ID/def_group"            androID:layout_wIDth="match_parent"            androID:layout_height="wrap_content"            androID:orIEntation="vertical"            androID:paddingBottom="@dimen/margin_small"            androID:paddingleft="@dimen/margin_standard"            androID:paddingRight="@dimen/margin_standard"            androID:paddingtop="@dimen/margin_small">            <TextVIEw                androID:ID="@+ID/squad_def_header"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="Defense"                androID:textSize="@dimen/text_size_standard" />        </linearLayout>        <linearLayout            androID:ID="@+ID/mID_group"            androID:layout_wIDth="match_parent"            androID:layout_height="wrap_content"            androID:orIEntation="vertical"            androID:paddingBottom="@dimen/margin_small"            androID:paddingleft="@dimen/margin_standard"            androID:paddingRight="@dimen/margin_standard"            androID:paddingtop="@dimen/margin_small">            <TextVIEw                androID:ID="@+ID/squad_mID_header"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="MIDfIElders"                androID:textSize="@dimen/text_size_standard" />        </linearLayout>        <linearLayout            androID:ID="@+ID/for_group"            androID:layout_wIDth="match_parent"            androID:layout_height="wrap_content"            androID:orIEntation="vertical"            androID:paddingBottom="@dimen/margin_small"            androID:paddingleft="@dimen/margin_standard"            androID:paddingRight="@dimen/margin_standard"            androID:paddingtop="@dimen/margin_small">            <TextVIEw                androID:ID="@+ID/squad_for_header"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="Forwards"                androID:textSize="@dimen/text_size_standard" />        </linearLayout>    </linearLayout></com.github.ksoichiro.androID.observablescrollvIEw.ObservableScrollVIEw>

Mylinearlayoutmanager是我在线查找的自定义linearlayoutmanager,以解决SDK linearlayoutmanager的封装问题.

有什么办法可以在单个布局中有多个RecyclerVIEws?看来我每个布局不能附加多个LayoutManagers.

任何帮助将是非常欢迎:)

解决方法 我也有这个问题.我的活动使用Tabs,有三个片段,当我去第三个选项卡,并返回到第一个(或第二),这个错误被抛出.

搜索很多,我发现可能是垃圾收集器,因为我使用了强大的参考.

由于构造函数linearlayoutmanager使用活动作为参数(而不是片段),所以Tab键活动在选项卡更改期间保持活动状态.

从类中删除mlinearlayoutmanager中的本地字段,并使用弱引用,我可以摆脱这个问题:

之前:

public class MyFragment1 extends Fragment    private linearlayoutmanager linearlayoutmanager;    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        linearlayoutmanager = new linearlayoutmanager(getActivity());        (...)    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater,Bundle savedInstanceState) {        (...)        mRecyclerVIEw.setLayoutManager(linearlayoutmanager);    }}

我改为:

public class MyFragment1 extends Fragment {    // private linearlayoutmanager linearlayoutmanager;    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        // linearlayoutmanager = new linearlayoutmanager(getActivity());        (...)    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater,Bundle savedInstanceState) {        (...)        mRecyclerVIEw.setLayoutManager(           new linearlayoutmanager(getActivity()));    }}
总结

以上是内存溢出为你收集整理的android – “LayoutManager已经附加到RecyclerView”错误全部内容,希望文章能够帮你解决android – “LayoutManager已经附加到RecyclerView”错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1131697.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存