
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”错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)