Uso de CardView y RecyclerView en mis archivos de diseño genera una excepción
Así que he estado tomando un tiro en el diseño de material de Android Preview L. He importado tanto el CardView
y las bibliotecas RecyclerView
.
Utilizo la versión de previsualización de Android Studio 0.8.0. Tenga instalados los paquetes SDK más recientes.
- Expandiendo / Colapsando CardView con un gesto de clic o de deslizamiento (Android)?
- Firebase android ¿Cómo evitar que FirebaseRecyclerAdapter se actualice automáticamente?
- Marshmallow (23) + RecyclerView (23.1.0) el desplazamiento desordena el contenido de arriba después de eliminar el elemento (notifyItemRemoved)
- Múltiples elementos seleccionados RecyclerView in Activity.java
- RecyclerView autofit LayoutManager
Una vez que los uso en mis archivos de diseño sin embargo, el visor previo lanza una excepción para ambos.
Aquí está la excepción para el CardView
:
java.lang.ClassFormatError: Illegal field name "CardView.Dark" in class android/support/v7/cardview/R$style at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:792) at java.lang.ClassLoader.defineClass(ClassLoader.java:635) at org.jetbrains.android.uipreview.ProjectClassLoader.findClass(ProjectClassLoader.java:63) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:411) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at android.support.v7.widget.CardView.initialize(CardView.java:69) at android.support.v7.widget.CardView.<init>(CardView.java:60) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:375) at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:100) at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:172) at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207) at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:132) at android.view.LayoutInflater.inflate(LayoutInflater.java:478) at android.view.LayoutInflater.inflate(LayoutInflater.java:381) at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:395) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:329) at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332) at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:575) at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:564) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932) at com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:564) at com.android.tools.idea.rendering.RenderService.render(RenderService.java:691) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:586) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1900(AndroidLayoutPreviewToolWindowManager.java:80) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$6$1.run(AndroidLayoutPreviewToolWindowManager.java:528) at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178) at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212) at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$6.run(AndroidLayoutPreviewToolWindowManager.java:523) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) at com.intellij.util.Alarm$Request$1.run(Alarm.java:327) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)
Y aquí está la excepción para RecyclerView
:
java.lang.NullPointerException at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1310) at android.view.View.measure(View.java:16987) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:722) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:458) at android.view.View.measure(View.java:16987) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5257) at android.widget.FrameLayout.onMeasure(FrameLayout.java:314) at android.view.View.measure(View.java:16987) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5257) at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:447) at android.view.View.measure(View.java:16987) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5257) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1083) at android.widget.LinearLayout.onMeasure(LinearLayout.java:615) at android.view.View.measure(View.java:16987) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5257) 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:16987) at android.widget.LinearLayout.measureVertical(LinearLayout.java:875) at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) at android.view.View.measure(View.java:16987) at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.java:621) at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:521) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:331) at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332) at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:575) at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:564) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932) at com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:564) at com.android.tools.idea.rendering.RenderService.render(RenderService.java:691) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:586) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1900(AndroidLayoutPreviewToolWindowManager.java:80) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$6$1.run(AndroidLayoutPreviewToolWindowManager.java:528) at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178) at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212) at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$6.run(AndroidLayoutPreviewToolWindowManager.java:523) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) at com.intellij.util.Alarm$Request$1.run(Alarm.java:327) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)
Esto hace la disposición del edificio casi imposible usando estas dos (asombrosas) View
, que me interesan más.
¿Hay una solución para esto ya, o es este comportamiento realmente esperado ya que son "personalizados" View
s, en cierto sentido?
- La altura de la vista Recycler anidada no envuelve su contenido
- Cómo obtener clics en RecyclerView (NO los niños)
- Obtener las últimas publicaciones / datos de firebase con límite de 10 registros en android y poblar en Listview
- "LayoutManager ya está conectado a un RecyclerView" error
- Práctica recomendada para eliminar asincrónicamente un elemento ListView / RecyclerView
- Animación de RecyclerView en el clic de artículo
- RecyclerView está cortando el último elemento
- Agregue al oyente táctil para Firebase RecyclerView
Este es un error en Android Studio. La herramienta de vista previa no sabe cómo inicializar los widgets. Creo que sí, porque la misma excepción se produce desde su aplicación si olvida llamar a recyclerView.setLayoutManager()
en su código.
Estoy usando Eclipse y enfrentado el mismo problema. Según lo sugerido por user7610, necesita llamar a recyclerView.setLayoutManager()
para superar esto.
He aquí cómo lo he resuelto ..
Crear una variable de miembro ..
RecyclerView.LayoutManager mLayoutManager;
En onCreate()
o onCreateView()
recyclerView = (RecyclerView) view .findViewById(R.id.business_recycler_view); recyclerView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(mLayoutManager);
Esto resolvió mi NullPointerException
.
Encontré un número similar. Como tal, si sólo inflar el diseño que consisten en RecyclerView entonces Al hacer setcontentView da error porque el gestor de diseño no está establecido para Recyclerview Definido en el archivo de diseño.
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.searchResultsList); LinearLayoutManager layoutmanager = new LinearLayoutManager(this); layoutmanager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(layoutmanager);
Si alguien se enfrenta al mismo problema para Recycler ver dentro de fragmento use este código
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View rootView = inflater.inflate(R.layout.fragment_timeline, container, false); mRecyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view); // use this setting to improve performance if you know that changes // in content do not change the layout size of the RecyclerView mRecyclerView.setHasFixedSize(true); // use a linear layout manager mLayoutManager = new LinearLayoutManager(getActivity()); mRecyclerView.setLayoutManager(mLayoutManager); String[] abc = {"hi","how are you","this is recycler"}; // specify an adapter (see also next example) mAdapter = new RecyclerViewAdapter(abc); mRecyclerView.setAdapter(mAdapter); return rootView; }
- ¿Cómo obtener una lista de la pila de historial de actividades?
- ¿Por qué mi configuración actualizada de Eclipse / Android no está creando mi APK?