Estoy tratando de jugar con el nuevo RecyclerView y cada vez que intento ejecutarlo, mi aplicación se bloquea inmediatamente. Me da NullPointerException para intentar acceder a métodos desde android.support.v7.widget.RecyclerView
. Miré otras publicaciones y vi que la mayoría de la gente no tenía, compile 'com.android.support:recyclerview-v7:+'
pero lo intenté y no ayudó en absoluto. No estoy seguro de qué hacer en este momento, se agradecería cualquier ayuda. Aquí el registro de errores: (Publicaría una imagen pero todavía no tengo 10 repeticiones)
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$LayoutManager.onMeasure(android.support.v7.widget.RecyclerView$Recycler, android.support.v7.widget.RecyclerView$State, int, int)' on a null object reference
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764)
at android.view.View.measure(View.java:17430)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:851)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
at android.view.View.measure(View.java:17430)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5786)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
onCreateView
lo que eliminas / destruyes / anulas el registroonDestroyView
... ¡Debes seguir esos ciclos de vida!Respuestas:
Este problema suele ocurrir cuando no
LayoutManager
se proporcionó ningún archivoRecyclerView
. Puedes hacerlo así:fuente
final
, por eso la he declaradofinal
aquí.En mi caso, no estaba conectado a 'final', sino al problema mencionado en el comentario de @ NemanjaKovačević a la respuesta de @aga. Estaba configurando un layoutManager en la carga de datos y esa fue la causa del mismo bloqueo. Después de mover la configuración de layoutManager a onCreateView de mi fragmento, se solucionó el problema.
Algo como esto:
fuente
LayoutManager
no se proporcionó , eso es todo. Puede hacer que la variable apunte aLayoutManager
final, o no final, no cambia nada.Para mí, estaba teniendo el mismo problema, el problema era que había un RecyclerView sin usar en xml con la vista desaparecida, pero no lo estoy vinculando a ningún adaptador en Activity, de ahí el problema. Se resolvió tan pronto como eliminé esas vistas de reciclador no utilizadas en xml
es decir, eliminé esta vista porque no se llamó en el código o se configuró algún adaptador
fuente
Experimenté este accidente a pesar de que tenía el
RecyclerView.LayoutManager
ajuste correcto. Tuve que mover elRecyclerView
código de inicialización a laonViewCreated(...)
devolución de llamada para solucionar este problema.fuente
RecyclerView
código de inicialización alonViewCreated(...)
trabajadoNecesitas usar
setLayoutManager
en elRecyclerView#onCreate()
método. Antes de agregarrecyclerView
a una vista, debe tener elLayoutManager
conjunto.fuente
Recibí este problema debido a una referencia incorrecta de
RecyclerView
identificación.a
fuente
Consulte con su ID de vista de reciclador, apuntando a la vista de reciclador real resolvió mi problema
fuente
Mi problema estaba en mi XML lyout tengo un android: animateLayoutChanges configurado en verdadero y llamé a notifyDataSetChanged () en el adaptador de RecyclerView en el código Java.
Entonces, acabo de eliminar android: animateLayoutChanges de mi diseño y eso resolvió mi problema.
fuente
Tuve este problema al usar la biblioteca Butterknife. Yo tenía:
Pero la versión correcta es:
fuente
En Gradle, implemente esta biblioteca:
En XML mencione así:
En Fragmento usamos
recyclerView
así:En Actividad usamos
RecyclerView
así:si necesitas horizontal
RecyclerView
haz esto:si desea usar GridLayoutManager usando el
RecyclerView
uso de esta manera:fuente
Estaba usando una inyección de dependencia - ButterKnife y este problema surgió porque no había enlazado la vista.
Así que dentro de onCreate () acabo de insertar esta línea:
Mi declaración de RecyclerView con inyección de dependencia:
fuente
Para aquellos que están usando: implementación 'androidx.recyclerview: recyclerview: 1.1.0-beta05'
asegúrese de que está usando esto en su diseño xml
También experimenté un bloqueo al ejecutar mi aplicación por debajo de API 27. Aquí hay un enlace al mensaje
Originalmente, he creado un estilo para cambiar el tamaño de fuente de mi vista de texto dentro de la vista de reciclaje, por eso creé este código a continuación: (podría haber llamado a @dimen al cambiar el tamaño de fuente según los tamaños de pantalla)
Dentro de style.xml
y agregué esto en mi tema
themes.xml
Después de investigar, descubrí que este es el que me está causando un error y, después de eliminar el estilo, ya no tengo un bloqueo.
Probé todas las soluciones posibles que encontré aquí en el desbordamiento de pila y casi me doy por vencido, afortunadamente en mi curiosidad pensé por qué no eliminar el estilo, tal vez esto cause el bloqueo y luego boom, el bloqueo se ha ido.
fuente
Dado que LinearLayoutManager es vertical de forma predeterminada, una forma más fácil de hacerlo es:
recyclerView.setLayoutManager(new LinearLayoutManager(context));
Si desea cambiar la orientación, puede usar este constructor:
fuente
Creo que el problema en tu
Adapter
. Asegúrese de que ha regresadoViewHolder
enonCreateViewHolder()
. Como abajo:fuente
Para mí, el problema fue con mi activity_main.xml (21) en el que el recycleView no tenía una identificación.
activity_main.xml (21)
activity_main.xml
Funcionó cuando agregué un android: id = "@ + id / transac_recycler_view" a activity_main.xml (21) recycleView
fuente
En mi caso, agregué solo la biblioteca butterknife y me olvidé de agregar annotationProcessor. Al agregar la siguiente línea a build.gradle (módulo de la aplicación), resolví mi problema.
fuente
Recyclerview recyclingview = findbyid (R.id.recyclerview) Puede que te lo hayas perdido
fuente
Tuve un problema similar cuando probé mi aplicación en GenyMotion. Después de reiniciar el dispositivo en GenyMotion, se resolvió el problema
fuente
Enfrenté el mismo problema porque tenía RecyclerView en otro diseño y no en activity_main.xml.
Al buscar en algunos sitios, obtuve algo y tuve ganas de compartir aquí.
Agregar ID para incluir etiqueta en Activity_main.xml
<include id="includedRecyclerLayout" .... </include>
Llame a este diseño antes de buscar la vista por ID en MainActivity.java
`ConstraintLayout includedLayout = findViewById (R.id.inckudedRecyclerLayout);
RecyclerViewrecyclerview = includedLayout.findViewById (R.id.RECYCLER_VIEW_ID) `;
fuente
Si yo donde tu haré esto. onView (withId (android.R.id.list)). realizar (RecyclerViewActions.scrollToPosition (3)); android.R.id.list cámbielo a su ID de lista y la posición será su posición dentro de su matriz.
fuente
escribiendo código en onCreateView ()
RecyclerView recicVideo = view.findViewById (R.id.recyVideoFag);
escribiendo código en onCreate () RecyclerView recicVideo = findViewById (R.id.recyVideoFag);
fuente