RecyclerView stürzt ab, wenn "verschrottete oder angehängte Ansichten möglicherweise nicht recycelt werden"


114

Ich verwende eine einfache Implementierung RecyclerViewvon der Android-Website mit a StaggeredGridLayoutManagerund erhalte immer wieder den Fehler, der meine App zum Absturz bringt:

java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true
            at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:3501)
            at android.support.v7.widget.RecyclerView$LayoutManager.scrapOrRecycleView(RecyclerView.java:5355)
            at android.support.v7.widget.RecyclerView$LayoutManager.detachAndScrapAttachedViews(RecyclerView.java:5340)
            at android.support.v7.widget.StaggeredGridLayoutManager.onLayoutChildren(StaggeredGridLayoutManager.java:572)
            at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1918)
            at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:2155)
            at android.view.View.layout(View.java:14008)
            at android.view.ViewGroup.layout(ViewGroup.java:4373)
            at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021)
            at android.view.View.layout(View.java:14008)
            at android.view.ViewGroup.layout(ViewGroup.java:4373)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:14008)
            at android.view.ViewGroup.layout(ViewGroup.java:4373)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:14008)
            at android.view.ViewGroup.layout(ViewGroup.java:4373)
            at android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:502)
            at android.view.View.layout(View.java:14008)
            at android.view.ViewGroup.layout(ViewGroup.java:4373)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:14008)
            at android.view.ViewGroup.layout(ViewGroup.java:4373)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
            at android.view.View.layout(View.java:14008)
            at android.view.ViewGroup.layout(ViewGroup.java:4373)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:14008)
            at android.view.ViewGroup.layout(ViewGroup.java:4373)
            at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1892)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1711)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
            at android.view.Choreographer.doCallbacks(Choreographer.java:562)
            at android.view.Choreographer.doFrame(Choreographer.java:532)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5041)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)  

Mit einfach meine ich wörtlich, dass es sich um dieselbe Implementierung handelt, die von dieser Seite auf ihrer Website übernommen wurde. Der einzige Unterschied besteht darin, dass das Layout meines Rasterelements ein ImageViewund ein paar TextViewSekunden beträgt, sodass ich meinen Code nicht erneut veröffentlichen muss.

Bekommt sonst noch jemand diesen Fehler und weiß, wie man damit umgeht?


Hast du eine Lösung?
Pratik Butani

Antworten:


191

Dieser Fehler wird verursacht, wenn Sie in Ihrem XML den Wert android:animateLayoutChangestrue festgelegt haben und notifyDataSetChanged()den RecyclerView-Adapter im Java-Code aufrufen .

Vermeiden Sie daher die Verwendung android:animateLayoutChangesmit RecyclerViews.


22
Wie kann man dann die Funktion animateLayoutChanges in recyclerview verwenden?
Dhuma1981

Was versuchst du zu erreichen? Artikelanimation? Wenn ja, unterstützt die RecyclerView-API dies - sehen Sie sich die Dokumentation an: developer.android.com/reference/android/support/v7/widget/…
Kenneth

4
@ dhuma1981 wenn der Elementanimator über mRecyclerView.setItemAnimator (neuer DefaultItemAnimator ()) festgelegt wird; dann muss animateLayoutChanges nicht wahr sein
Rich Ehmer

RecyclerViewverwendet DefaultItemAnimatorstandardmäßig.
Benjamin

-, - Ich habe dieses Problem genau so, wie du es beschrieben hast
Ninja Coding

52

Ich musste mich auch mit diesem Absturz auseinandersetzen und in meinem Fall hatte es nichts damit zu tun android:animateLayoutChanges.

Das, das RecyclerViewwir bauten, hatte mehr als eine Art von Ansichten und einige hatten EditTexts in ihnen. Nach einer Weile haben wir das Problem auf fokusbezogen festgelegt. Dieser Fehler tritt beim Recycling auf EditTextund einer von ihnen ist fokussiert.

Natürlich haben wir versucht, den Fokus zu löschen, wenn neue Daten an eine recycelte Ansicht gebunden werden, aber das hat erst funktioniert, wenn sie android:focusableInTouchMode="true"aktiviert sind RecycleView. Tatsächlich ist dies die einzige Änderung, die am Ende erforderlich war, damit dieses Problem behoben werden konnte.


2
Fantastische, mehrere Probleme im Zusammenhang mit dem Fokus, die ich bei der Verwendung von EditTexts in einer RecyclerView hatte. Vielen Dank!
Rabie Jradi

1
Ich hatte ACET in recyclerview, und es zerquetscht. Dieser Beitrag hat mich gerettet.
Kai Wang

Und ich habe keine Edittexte in Artikeln, aber ich habe Kontrollkästchen. sollte ich es versuchen, android:focusableInTouchMode="true"weil es nur manchmal in einigen Geräten passiert (selten) und ich vermute, dass es nicht mit meinem Problem zusammenhängt, aber Stack-Trace für Absturz ist fast gleich.
Shivansh

Dies war mein Fall, aber die Einstellung android:focusableInTouchMode="true"hat mir überhaupt nicht geholfen. Also habe ich den Fokus im onViewDetachedFromWindowRückruf gelöscht . public void onViewDetachedFromWindow(@NonNull RecyclerView.ViewHolder holder) { if (holder instanceof ItemViewHolder) { ItemViewHolder item = (ItemViewHolder) holder; if (item.editText.isFocused()) item.editText.clearFocus(); } }
Artman

24

Ich habe die android:animateLayoutChangesEigenschaft aus dem Layout entfernt und das Problem wurde behoben.


Ich bekam diesen Absturz, als ich das auch android:animateLayoutChangesauf mein Wohnmobil legte.
Mauker

2
Hatte dieses Flag auf dem übergeordneten Container gesetzt (Relatives Layout). Das Problem wurde behoben.
1911z

@ 1911z Wollen Sie damit sagen, dass Sie das Flag auf dem übergeordneten Container hatten und das Entfernen von dort das Problem behoben hat?
RamPrasadBismil

14

Überprüfen Sie unter anderem, ob dieses Problem android:animateLayoutChanges="true"auf RecyclerView festgelegt wurde. Dies führt dazu, dass das Recycling und das erneute Anbringen der RecyclerView-Elemente fehlschlägt. Entfernen Sie es und weisen Sie das Attribut dem übergeordneten Container von RecyclerView zu, z. B. einem LinearLayout / RelativeLayout. Das Problem sollte dann behoben sein.


Ich habe diesen Absturz gesehen, obwohl ich das Attribut für den übergeordneten Container des Wohnmobils festgelegt habe.
RamPrasadBismil

@RamPrasadBismil Bitte poste deinen Code und vielleicht können wir ihn uns ansehen?
Ram Iyer

12

Ich habe zwei Tage gebraucht, konnte das aber nicht umgehen. Am Ende musste ich den Artikel-Prefetch deaktivieren.

Beim Einstellen des Layout-Managers können Sie einfach anrufen

mGridLayoutManager.setItemPrefetchEnabled(false);

Es hat den Fehler für mich verschwinden lassen. Hoffe, es wird für jemanden nützlich sein.


Hat für mich gearbeitet. Vielen Dank.
Vicky

1
Ich mache mir wirklich Sorgen, dass die Leute diese Lösung übernehmen. Sie verlieren viel, wenn Sie diese Flagge deaktivieren, und der Fehler befindet sich immer noch an einer anderen Stelle -
Felipe Castilhos

8

Bei der Verwendung von Slimfit Sticky Headern ist dieser Fehler aufgetreten. Es wurde verursacht, weil die erste Position falsch eingestellt wurde. Ich habe die Antwort hier

public void onBindViewHolder(MainViewHolder holder, int position) {

  final View itemView = holder.itemView;
  final LayoutManager.LayoutParams params = LayoutManager.LayoutParams.from(itemView.getLayoutParams());

  params.setSlm(LinearSLM.ID);
  params.width = ViewGroup.LayoutParams.MATCH_PARENT;
  params.setFirstPosition(item.mSectionFirstPosition);
  itemView.setLayoutParams(params);

}

Stellen Sie einfach sicher, dass Sie den korrekten Wert für mSectionFirstPosition übergeben


Willkommen bei StackOverflow. Könnten Sie bitte eine vollständige Antwort anstelle nur eines Links geben?
Slfan

was ist itemhier
Fehler passieren

Dies ist das Listenelement, das in der Recycler-Ansicht angezeigt werden soll. Im Grunde speichere ich also die erste Position des Abschnitts für jedes Listenelement.
Jaspinder Kaur

8

Ich bin heute Morgen auf dieses Problem gestoßen, habe aber nicht den gleichen Grund wie oben erwähnt.

Beim Debuggen habe ich festgestellt, dass die Elementansicht in meinem ViewHolder mParentnicht null ist, was im Normalfall keine sein sollte (das ist das Protokoll mit der Aufschrift "Angehängte Ansicht darf nicht recycelt werden"). Ich denke, dies bedeutet, dass die untergeordnete Ansicht ist bereits an ein Elternteil angehängt, würde dies beim Recycling zu Fehlern führen.)

Aber ich habe die untergeordnete Ansicht nicht jedes Mal manuell angehängt. Und ich habe festgestellt, dass dies erledigt ist, wenn ich versuche, die untergeordnete Ansicht in meinem ViewHolder aufzublähen.

layoutInflater.inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)

Und der letzte Parameter attachToRootsollte falsch sein.

Nachdem ich es geändert habe false, habe ich mein Problem behoben.

Ich sehe diesen Absturz übrigens nur, wenn ich meine Support-Bibliothek auf die neueste Version 25.0.0 aktualisiere. Bevor ich Version 23.4.0 verwendet habe und dieses Problem nicht auftritt. Ich denke, in der neuesten Support-Bibliothek sollte sich etwas geändert haben.

Ich hoffe das hilft.


8

Ich habe auch den gleichen Fehler beim Scrollen auf dem RecyclerView: dann habe ich animateLayoutChanges="true"in der Layout-Datei entfernt, RecyclerViewdann hat alles funktioniert.


6

In meinem Fall geschah dies, weil ich Transitionbeim Versuch, die Größe von RecyclerView zu ändern, ausgeführt wurde, weil die Softwaretastatur angezeigt werden sollte.

Ich reparierte es meinen Ausschluß den RecyclerView von dem Transitiondurch die Verwendung Transition.excludeTarget(R.id.recyclerview, true);


5

Auch ich bekam diesen Fehler, wenn ich animateLayoutChanges = "true" in der Layoutdatei für RecyclerView hatte. Löschen Sie dieses Attribut und der Fehler verschwindet!


Bitte beachten Sie, dass diese Frage aus dem Jahr 2014 stammt und sich die Eigenschaften möglicherweise inzwischen geändert haben.
Korashen

2
Nein, es ist noch nicht geändert
Sanjay Kushwah

5

Es gibt eine Reihe von Gründen, warum diese Ausnahme aufgerufen wird. In meinem Fall lag es an laufenden Animationen, weshalb die Ansichten immer noch angehängt sind und nicht in die Ansicht entfernt werden konnten. Erst wenn die Animation beendet ist, kann die Ansicht entfernt und recycelt werden.

Es gibt zwei Arten von Animationen, die sich auf das Recycling der Recyclingansicht auswirken können.

1) Ist das RecyclerView.ItemAnimator- das sollte nicht das Problem sein. Dies sollte ziemlich sicher zu verwenden sein, da es nach Anhängen und Verschrottungen sucht und das Recycling ordnungsgemäß handhabt.

2) android:animateLayoutChanges="true"oder TransitionManager.beginDelayedTransition()oder TransitionManager.go () usw. - Diese Animationen werden von selbst ausgeführt und greifen auf die zu animierenden Elemente zu. Dies führt dazu, dass die Ansichten zwangsweise angehängt werden müssen, bis die Animation beendet ist. Das Recyclerview hat keine Kenntnis von diesen Animationen, da es außerhalb seines Bereichs liegt. Daher wird recyclerviewmöglicherweise versucht, ein Element zu recyceln, da es möglicherweise ordnungsgemäß recycelt werden kann. Das Problem besteht jedoch darin, dass diese APIs die Ansichten bis zum Abschluss der Animation beibehalten.

Wenn Sie android:animateLayoutChanges="true"oder TransitionManager.beginDelayedTransition()oder TransitionManager.go () usw. verwenden, entfernen Sie einfach das RecyclerViewund seine untergeordneten Elemente aus der Animation.

Sie können dies einfach tun, indem Sie das ergreifen Transitionund anrufen

Transition.excludeChildren(yourRecyclerView, true)
Transition.excludeTarget(yourRecyclerView, true)

Hinweis:

Beachten Sie, dass es wichtig ist Transition.excludeChildren(), alle RecyclerviewKinder von der Animation auszuschließen und nicht nur sich Recyclerviewselbst.


Vielen Dank! TransitionManager.beginDelayedTransition () war in meinem Fall die Ursache des Problems. Sie können Ihr Codebeispiel mit weiteren Details zur Verwendung aktualisieren Transition.excludeChildren. Sie instanziieren ein Übergangsobjekt wie : val transition = AutoTransition(), rufen excludeChildren(recyclerView, true)dieses Objekt auf und übergeben es an beginDelayedTransaction() as the second parameter.
Danilo Prado

4

Während in meinem Fall das Entfernen animateOnLayoutChangeaus der recyclerView den Absturz behebte, brauchte ich dennoch die Möglichkeit, die Layoutänderungen im viewHolder zu animieren. Damit dies funktioniert, muss LinearLayout' in the view holder needs theanimateOnLayoutChange 'auf true gesetzt werden, aber ich musste notifyItemChangedauf den Adapter. Dadurch konnten beide layoutTransition-Animationen gestartet werden (zum Erweitern und Reduzieren des viewHolder) und die verschrottete Ausnahme vermieden werden. Vermeiden Sie es also, animateOnLayoutChange in die recylcerView einzufügen, und verwenden Sie die verschiedenen Benachrichtigungsmethoden, um die Standardanimationen für Änderungen der Ansichtsgröße zu aktivieren.


Ich versuche das Gleiche zu tun, um die Erweiterung des Elements zu animieren, aber wenn Sie notifyItemChanged im Adapter aufrufen, blinkt das Element nach der Änderung (Animation funktioniert)! Wie verhindern Sie das?
Flyview

Für unseren Anwendungsfall haben wir unseren benutzerdefinierten Code mithilfe von animateOnLayoutChange ausgetauscht, um ein erweiterbares Layout zu verwenden. Es erreicht dasselbe, was wir versucht haben, aber viel flexibler. github.com/chuross/expandable-layout
kingargyle

3

Ich dieses Problem lösen , indem parent.addView()inonCreateViewHolder

Das ist mein Code

public MyViewHolder onCreateViewwHolder(ViewGroup parent, int viewType)  {
    Button addButton = new Button(context);
    //parent.addView(addButton);
    return new MyViewHolder(addButton);
}

Funktion bei der android.support.v7.widget.RecyclerViewRecycler.recyclerViewHolderinternal()Überprüfung, ob meine Schaltfläche bereits ein übergeordnetes Element hat oder nicht. Wenn wir dem übergeordneten Element eine Schaltfläche hinzufügen, wird diese auch RecyclerViewseiner mParentVariablen zugewiesen .


Ich denke, es ist eine neue Anforderung, die ich in Version 24 der Unterstützung der Bibliothek an das übergeordnete Element angehängt habe. Nach der Aktualisierung auf 25 habe ich den Absturz erhalten.
Kirill Kulakov

1

Ich habe gesehen, dass dies für mich passiert ist, als ich ein benutzerdefiniertes Objekt im ViewHolderfür den RecyclerViewAdapter verwendet habe.

Um das Problem zu beheben, habe ich das benutzerdefinierte Objekt, das in meinem Fall ein Timer onViewRecycled(ViewHolder holder)für den Adapter war, wie folgt gelöscht :

    public void onViewRecycled(ViewHolder holder) {
        if(holder instanceof  EntityViewHolder) {
            if(((EntityViewHolder)holder).timer != null) {
                ((EntityViewHolder) holder).timer.cancel();
            }
        }
        super.onViewRecycled(holder);
    }

Dies hat den Fehler behoben.


1
    /**
     * Informs the recycler whether this item can be recycled. Views which are not
     * recyclable will not be reused for other items until setIsRecyclable() is
     * later set to true. Calls to setIsRecyclable() should always be paired (one
     * call to setIsRecyclabe(false) should always be matched with a later call to
     * setIsRecyclable(true)). Pairs of calls may be nested, as the state is internally
     * reference-counted.
     *
     * @param recyclable Whether this item is available to be recycled. Default value
     * is true.
     *
     * @see #isRecyclable()
     */
    public final void setIsRecyclable(boolean recyclable) {
        mIsRecyclableCount = recyclable ? mIsRecyclableCount - 1 : mIsRecyclableCount + 1;
        if (mIsRecyclableCount < 0) {
            mIsRecyclableCount = 0;
            if (DEBUG) {
                throw new RuntimeException("isRecyclable decremented below 0: " +
                        "unmatched pair of setIsRecyable() calls for " + this);
            }
            Log.e(VIEW_LOG_TAG, "isRecyclable decremented below 0: " +
                    "unmatched pair of setIsRecyable() calls for " + this);
        } else if (!recyclable && mIsRecyclableCount == 1) {
            mFlags |= FLAG_NOT_RECYCLABLE;
        } else if (recyclable && mIsRecyclableCount == 0) {
            mFl`enter code here`ags &= ~FLAG_NOT_RECYCLABLE;
        }
        if (DEBUG) {
            Log.d(TAG, "setIsRecyclable val:" + recyclable + ":" + this);
        }
    }

1

1 :remove: Daten aus der Liste entfernen.

2 、notifyDataSetChanged: notifyDataSetChanged ();

3 notifyItemRemovedanimation : Animation anzeigen.

4 、notifyItemRangeChanged: Größe der Bereichsansicht und Neuzeichnen derviewHolders(onBindViewHolder methods)


Ich habe getan, notifyItemRemovedwenn das Entfernen footerund App abstürzt, ändern Sie es in notifyDataSetChangedund jetzt funktioniert es in Ordnung. danke
Siarhei

1

In meinem Fall habe ich das verwendet, TransitionManager.beginDelayedTransition()bevor ich eine Ansicht über der recyclerView hinzugefügt habe. Ich habe das entfernt TransitionManager.beginDelayedTransition()und keinen Absturz.


1

Ich habe dieses Problem durch einen Anruf gelöst

setHasStableIds(true);

im Konstruktor des Adapters und Überschreiben getItemIdim Adapter:

@Override
public long getItemId(int position) {
    return position;
}

1

android:animateLayoutChanges="true"Aus der Recyclingansicht entfernen oder einstellenandroid:animateLayoutChanges="false"


0

ich benutze com.squareup.picasso.RequestCreator

public void into(android.widget.ImageView target,
             Callback callback)

Zum dynamischen Ändern der Größe von ImageView nach dem Herunterladen von Bildern aus dem Internet und Speichern der Größe und Höhe der Größe, um die Ansichtsgröße beizubehalten. Ich habe diese Ausnahme erhalten, weil ich sie LayoutParamsin a gespeichert Mapund in meinem onBindViewHolder abgerufen und direkt auf meine gesetzt habe ImageView. Ich ImmutablePair<Integer, Integer>behebe dies, indem ich nur die Größe von ImageView und nicht viele andere Zustände speichere und den folgenden Code verwende, um sie wiederherzustellen.

ViewGroup.LayoutParams params = image.getLayoutParams();
params.width = widthAndHeight.getLeft();
params.height = widthAndHeight.getRight();
image.setLayoutParams(params);

0

Für mich der gleiche Fehler, der durch eine LayoutTransition auf einer übergeordneten ViewGroup verursacht wurde.


0

Lassen Sie mich bitte eine weitere mögliche Lösung für diese Art von Problem hinzufügen. Ich hatte das gleiche Problem mit der superSlim- Bibliothek für klebrige Header in RecyclerView. ich benutzteMatrixCursor Daten auf gesetzt RecyclerViewCursorAdapter. Der Grund für dieses Problem war, dass ID-Spalten 0für alle Header gleich sind. Hoffe, das würde jemandem helfen, ein paar Tage Debugging zu sparen.


0

In meinem Fall lag das Problem an der fehlerhaften Implementierung dieser Methode public long getItemId(int position)(überschrieben vonRecyclerView.Adapter Methode).

Der alte Code erhält zwei verschiedene IDs für dasselbe Element (in meinem Fall ist es das Fußzeilenelement), nachdem das Problem behoben wurde.


0

Problemumgehungslösung, wenn der Grund für die Ausnahme das übergeordnete Element von itemView ist. Entfernen Sie im Code, in dem Sie notifyItemRemoved (Position) haben, itemView aus RecyclerView:

View itemView = mRecyclerView.getLayoutManager().findViewByPosition(position);
if (itemView != null && itemView.getParent() != null) {
    ((ViewGroup) itemView.getParent()).removeView(itemView);
}
notifyItemRemoved(position);

0

Ein besonderer Fall, der für mich auftrat, war, dass ich ein Ansichtsmitglied im Adapter hatte und faul war, eine Ansicht zu instanziieren, die mit der Recyclingansicht nicht zu tun hat.

Dies verstößt auch gegen die Prinzipien der Recycling-Ansichten, die in diesem Fall als Speicherung eines Verweises auf die Ansicht dienen. Ich gebe ein kurzes Beispiel unten:

// typically we would do this in a grid view adapter:
View v;
// ...
if(v = null){
v = LayoutInflater.inflate ...;
}

// Now with recycle view there is NO need to store a reference to View
// and lazy instantiate. So get rid of your View v member

0

Diese Ausnahme ist nicht Ursache von

android: animateLayoutChanges

oder

android: focusableInTouchMode

Diese endgültige richtige Antwort ist nur, weil Sie ein FALSCHES LayoutParams festgelegt haben .

    nameLP = new LinearLayout.LayoutParams(context.getResources().getDisplayMetrics().widthPixels, LinearLayout.LayoutParams.WRAP_CONTENT);
    nameLP2 = new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT);

Der Name LP ist OK. Der Name LP2 tritt auf, wenn der Absturz .bug hier ist.

Ich versuche alle Antworten dieser Seite. Vertrau mir.


0

Ich hatte dieses Problem , weil ich überschreiben equals()und hashcode()Verfahren ViewHoldervon RecyclerView.ViewHolder durch Datengleichheit Berechnung und hashcode, dann ist die Recycling - Logik hat nicht funktioniert und abgestürzt, ich entfernen Sie einfach das Überschreiben und fixiert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.