SwipeRefreshLayout Got Action_Move congela la vista
Tengo un NavigationDrawer normal con diversos fragmentos:
- Noticias
- Otras cosas 1
- Otras cosas 2
- Ajuste
El problema :
- No se puede desplazar en un ListView en un swipeRefreshLayout
- SwipeRefreshLayout cargador no sube cuando tire hacia abajo de Android
- Actualizar Actualización de Android Desplácese hasta actualizar
- SwipeRefreshLayout intercepta con ViewPager
- ¿Cómo solicitar datos de la base de datos de firebase de nuevo?
El NewsFragment contiene un SwipeRefreshLayout. Funciona muy bien la primera vez que me refresco.
Puedo cambiar el fragmento a otras cosas 1 y 2 y ajuste. Así que vuelvo a NewsFragment.
Y ahora, cuando me refresco, el fragmento se congela.
El archivo drawerLayout funciona correctamente (abrir / cerrar, incluso el cambio de título de ActionBar), pero el fragmento principal permanece en NewsFragment y no puedo desplazarte. Pero el scollListner funciona (tengo registro), pero la vista no cambia.
No refreshView (parte superior del swipeRefreshLayout), sin desplazamiento, sin botón de respuesta (en el enfoque, onclick), pero sólo visualmente.
En realidad, es como si un Fragmento Respondente estuviera detrás del fragmento congelado.
También tengo este error en ADBLog:
SwipeRefreshLayout﹕ Got ACTION_MOVE event but don't have an active pointer id.
Alguna idea ??
Puedo fijar código si usted pide.
- SwipeRefreshLayout: Desplazar la animación de progreso
- IllegalArgumentException: pointerIndex fuera de rango desde SwipeRefreshLayout
- SwipeRefreshLayout desactivar la animación de arrastre en el dedo hacia abajo
- SwipeRefreshLayout se oculta detrás de ActionBar con barras de estado transparentes
- SwipeRefreshLayout activar programaticamente
- Scrollup no funciona en StickyListviewHeader con SwipeRefreshLayout
- RecycleView se bloquea en Fragmento porque LayoutManager es NULL
- ¿Cómo usar SwipeRefreshLayout?
Ok encontré la solución. Lo publico porque puede suceder a todo el mundo y eso es un poco aburrido (dos días para encontrarme).
Primero tuve esto en mi XML que contiene el SwipeRefreshLayout (un fragmento):
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/news_container_refresh" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp" android:background="@color/news_background"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/news_list_recycle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:dividerHeight="5dp" /> <ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/news_progress" android:visibility="invisible" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> </RelativeLayout>
Por lo tanto, para arreglar el error, USTED NECESITA APENAS TENER LA RECICLAJE (o listview) EN SU SWIPEREFRESHLAYOUT:
Por lo tanto, muevo mi progressBar y hacer el RelativeLayout como el rootView.
Resultado:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/news_progress" android:visibility="invisible" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/news_container_refresh" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp" android:background="@color/news_background"> <android.support.v7.widget.RecyclerView android:id="@+id/news_list_recycle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:dividerHeight="5dp" /> </android.support.v4.widget.SwipeRefreshLayout>
Espero que ayude a alguien más tarde.
Esta respuesta funcionó para mí. Se trata de aclarar el diseño de actualización en onPause ().
Su ejemplo de código sí soluciona el problema. Esto parece ser un problema con la biblioteca de soporte v21.
Para un poco más de aclaración para ayudar a otros que podrían venir a través de esto, la cuestión parece ser que el SwipeRefreshLayout
ya no es feliz siendo la vista de la raíz.
Agregar un RelativeLayout
para ajustar el SwipeRefreshLayout
corrige el error en su caso, en lugar de tener sólo el ListView/RecyclerView
dentro de SwipeRefreshLayout
. No lo he intentado, pero supongo que un LinearLayout
u otro también arreglaría las cosas.
Así que la solución es:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent"> <!-- List, Layout etc --> </android.support.v4.widget.SwipeRefreshLayout> </RelativeLayout>
- Deshabilitar (positivo) el botón de AlertDialog por defecto
- En Android, ¿cómo puedo establecer el valor de un cuadro de edición en WebView mediante JavaScript?