"LayoutManager ist bereits an einen RecyclerView" Fehler angehängt

Ich versuche, mehrere RecyclerViews in einem Layout zu haben, aber ich bekomme die folgende Fehlermeldung: "LayoutManager ist bereits an eine RecyclerView"

Der Java-Code lautet:

  • Android: Wie bekommst du Framebuffer (Screenshot) auf verwurzeltes Gerät?
  • Gibt es irgendeine Open Source Augmented Reality Sdk für Android?
  • Wie man Multiplayer-Spiel macht
  • Android - Wie man eine Anwendung auf der / sdcard nach dem Start starten
  • DrawerLayout mit Admob-Anzeige
  • Hilfe mit einem benutzerdefinierten View-Attribute in einem Android Library Project
  • @Override public 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, LinearLayoutManager.VERTICAL, false)); gkRecyclerView.setHasFixedSize(false); scrollView.setTouchInterceptionViewGroup((ViewGroup) parentActivity.findViewById(R.id.container)); if (parentActivity instanceof ObservableScrollViewCallbacks) { scrollView.setScrollViewCallbacks((ObservableScrollViewCallbacks) parentActivity); } return view; } 

    Der XML-Layout-Code lautet:

     <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> 

    Der MyLinearLayoutManager ist ein benutzerdefinierter LinearLayoutManager, den ich online gefunden habe, um die Wrap-Content-Ausgabe des SDK LinearLayoutManagers zu lösen.

    Gibt es irgendwie kann ich mehrere RecyclerViews in einem einzigen Layout haben? Es scheint, dass ich nicht mehr als ein LayoutManager pro Layout anhängen kann.

    Jede Hilfe wäre sehr willkommen 🙂

  • Android Bind Service gibt jedes Mal falsch zurück
  • Java.lang.IllegalArgumentException: Schlechte Klasse: Klasse java.util.GregorianCalendar
  • Eclipse geben Fehler, fehlende R.java Datei nach dem letzten Update
  • Espresso: Rückkehr Boolesch, wenn Ansicht vorhanden ist
  • Wie man renderspeed in android webview optimiert
  • Android - Flip Bild in xml
  • 3 Solutions collect form web for “"LayoutManager ist bereits an einen RecyclerView" Fehler angehängt”

    Ich hatte auch dieses problem Meine Aktivität verwendet Tabs, mit drei Fragmenten, wenn ich auf die dritte Registerkarte gehe und zurück zum ersten (oder zweiten), wird dieser Fehler geworfen.

    Nach der Suche nach viel, fand ich heraus, dass der Müllsammler sein könnte, weil ich eine starke Referenz verwendete.

    Da der Konstruktor LinearLayoutManager die Aktivität als Parameter (nicht das Fragment) verwendet, bleibt eine Tabs-Aktivität während der Registerkartenänderungen aktiv.

    Entfernen des lokalen Feldes in mLinearLayoutManager aus der Klasse und mit einer schwachen Referenz, konnte ich dieses Problem loswerden:

    Vor:

     public class MyFragment1 extends Fragment private LinearLayoutManager linearLayoutManager; @Override public void onCreate(Bundle savedInstanceState) { linearLayoutManager = new LinearLayoutManager(getActivity()); (...) } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { (...) mRecyclerView.setLayoutManager(linearLayoutManager); } } 

    Ich wechselte zu:

     public class MyFragment1 extends Fragment { // private LinearLayoutManager linearLayoutManager; @Override public void onCreate(Bundle savedInstanceState) { // linearLayoutManager = new LinearLayoutManager(getActivity()); (...) } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { (...) mRecyclerView.setLayoutManager( new LinearLayoutManager(getActivity())); } } 

    Ich habe das gleiche Problem auch. Ich arbeite um sie herum, indem du null auf LinearLayoutManager-Instanz setzt.

     public class MyFragment extends Fragment { protected LinearLayoutManager mLinearLayoutManager; ... @Override public void onDestroy() { super.onDestroy(); if(mLinearLayoutManager != null) // Workaround: android.support.v7.widget.LinearLayoutManager is already attached to a RecyclerView mLinearLayoutManager = null; } 

    Ich habe das Problem gelöst (falls jemand wieder vorstellt), indem er folgende Schritte ausführt:

    Sauberes Projekt

    Projekt neu erstellen

    Caches ungültig machen

    Danach kompilierte ich wieder und es läuft wie ein Charme

    PS: Ich weiß nicht, welcher der drei Schritte oben den Trick hatte, da ich sie alle auf einmal vor dem Kompilieren ausprobiert habe. Wenn jemand es wieder vorstellt und diese Schritte eins nach dem anderen versucht, bitte posten, welcher Schritt vor allem die Lösung für das Problem ist.

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.