1

Yo,Snackbar des Swipe zu entlassen gefriert App

Schnell Kontext:

Ich habe einen einzigen FragmentActivity, die alle Hosts anzeigen Komponenten ich während meiner App angezeigt werden, insbesondere eine Koordinators Layout-Ansicht, die für jede verwendet wird, Snackbars, die ich mache, um den Swipe-to-entlassen-Effekt zu erzielen.

Aktivität xml

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/cl_snackbar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

Aktivitätsklasse

@BindView(R.id.cl_snackbar)    View snackBar; 

/** 
* To allow for use of a snackbar throughout the app's fragments 
*/ 
public View getSnackBar() { 
    return snackBar; 
} 

Fragment Klasse

@Nullable private View snackBar; 

//This is done in fragment's onCreateView() 
if (getActivity() instanceof ParentActivity) snackBar = ((ParentActivity) getActivity()).getSnackBar(); 

//This is done in a method 
if (snackBar != null) Snackbar.make(snackBar, "Working", Snackbar.LENGTH_LONG).show(); 

Diese func Die Funktionalität hat im vergangenen Jahr perfekt funktioniert, aber ich habe kürzlich meine Android-Support-Bibliotheken auf 27.0.0 von 26.1.0 aktualisiert und der Swipe-to-file-Effekt friert jetzt die App vollständig ein. Es reagiert nicht mehr. Im logcat erhalte ich die folgende Warnung:

E/ViewDragHelper: Ignoring pointerId=0 because ACTION_DOWN was not received for this pointer before ACTION_MOVE. It likely happened because ViewDragHelper did not receive all the events in the event stream. 
E/ViewDragHelper: Ignoring pointerId=-1 because ACTION_DOWN was not received for this pointer before ACTION_MOVE. It likely happened because ViewDragHelper did not receive all the events in the event stream. 
E/ViewDragHelper: Ignoring pointerId=-1 because ACTION_DOWN was not received for this pointer before ACTION_MOVE. It likely happened because ViewDragHelper did not receive all the events in the event stream. 
E/ViewDragHelper: Ignoring pointerId=-1 because ACTION_DOWN was not received for this pointer before ACTION_MOVE. It likely happened because ViewDragHelper did not receive all the events in the event stream. 

I throught die diff Änderungen in Android 27.0.0 changes geprüft habe, aber ich sehe keine Änderungen mit einem der Unterstützungsklassen beteiligt zu tun. Kann jemand Hilfe oder Hinweise geben, was plötzlich schief gelaufen ist?

+0

Haben Sie das gleiche Problem zur Zeit, ist es Ihnen gelungen, es zu lösen? – Mayeul

+0

Nein. Ich musste zwischenzeitlich auf Version 26.1.0 umschalten :( – HaroldHibari

+1

Ich habe die Position des Koordinator-Layouts im Layout geändert, inklusive aller Elemente, und jetzt funktioniert es ... – Mayeul

Antwort

0

Swipe löschen Verhalten Fix Problem zu entlassen :)

snackBar.addCallback(object : BaseTransientBottomBar.BaseCallback<Snackbar>() { 
     override fun onShown(transientBottomBar: Snackbar) { 
      val layoutParams = transientBottomBar.view.layoutParams as? CoordinatorLayout.LayoutParams 
      layoutParams?.let { it.behavior = null } 
     } 
    }) 

Im Fall, wenn Sie Verhalten speichern müssen, sollten Sie Verhalten und Einfügen requestDisallowInterceptTouchEvent (true) vor dem Umgang mit Berührungsereignis und requestDisallowInterceptTouchEvent (false) kopieren, nachdem es sollte Problem beheben

Verwandte Themen