Cajón de navegación – El diseño del cajón no se puede instanciar

Estoy tratando de implementar un cajón de navegación en mi aplicación, pero estoy teniendo problemas graves con él. Ahora mi problema es que quiero poner mi MainContent dentro de un diseño de cajón como este:

<android.support.v4.widget.DrawerLayout android:id = "@+id/drawer_layout" xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:layout_height = "match_parent" > <FrameLayout [...] </FrameLayout> </android.support.v4.widget.DrawerLayout> 

Pero obtengo este código de error

Las clases siguientes no pudieron ser instanciadas: – android.support.v4.widget.DrawerLayout (Open Class, Show Exception)

Estos son los detalles de la excepción:

 java.lang.ClassNotFoundException: android.support.v4.widget.DrawerLayoutImpl at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:148) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.lang.ClassLoader.defineClass(ClassLoader.java:642) at com.intellij.util.lang.UrlClassLoader._defineClass(UrlClassLoader.java:195) at com.intellij.util.lang.UrlClassLoader.defineClass(UrlClassLoader.java:191) at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:152) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.android.tools.idea.rendering.RenderClassLoader.loadClassFromJar(RenderClassLoader.java:78) at org.jetbrains.android.uipreview.ProjectClassLoader.loadClassFromModuleOrDependency(ProjectClassLoader.java:108) at org.jetbrains.android.uipreview.ProjectClassLoader.load(ProjectClassLoader.java:89) at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:56) at org.jetbrains.android.uipreview.ProjectClassLoader.findClass(ProjectClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:173) at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:96) 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:482) at android.view.LayoutInflater.inflate(LayoutInflater.java:385) at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:401) 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:604) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1900(AndroidLayoutPreviewToolWindowManager.java:80) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:546) 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$7.run(AndroidLayoutPreviewToolWindowManager.java:541) 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:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 

Sigo esta guía http://developer.android.com/training/implementing-navigation/nav-drawer.html Pero hasta ahora no funciona en absoluto. Tal vez alguien tiene un tutorial mejor sobre cómo implementar un cajón de navegación correctamente con Android 5.0 ??

Gracias de antemano por cualquier ayuda.

Sinceramente John

Llegado aquí con el mismo problema, en primer lugar, preste atención a lo que Christer Nordvik comentó:

Piense que es un error en la última versión de herramientas: https://code.google.com/p/android/issues/detail?id=78090

Tenemos lo mismo en el diseñador, pero al ejecutarlo está bien. Se ha trabajado sin problemas antes de la versión API del release del SDK.

Como lo veo, usted tiene 4 opciones:


Opción 1: volver a Android pre 5.0 Utilizar y compilar con su código con SDK 20

Cambie build.gradle a lo siguiente:

 apply plugin: 'com.android.application' android { compileSdkVersion 20 buildToolsVersion "20.0.0" defaultConfig { applicationId "com.example.yourapp" minSdkVersion 8 targetSdkVersion 20 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-v4:20.0.0' } 

Cambie las siguientes líneas a lo que corresponda a su proyecto:

  applicationId "com.example.yourapp" minSdkVersion 8 

Lo más probable es que también necesite cambiar "res \ v21 \ styles.xml" de:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="android:Theme.Material.Light"> </style> </resources> 

a:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="android:Theme.Holo.Light"> </style> </resources> 

Como los temas materiales se introducen en Lollipop / Android 5.0

Sincronice su proyecto con el nuevo archivo gradle, espere a que la sincronización termine y usted está bien para ir, ahora debería ver la vista previa de diseño

Sincronizar su proyecto con archivos Gradle


Opción 2: actualizar el código en el texto

El código compilará y funcionará perfectamente, solo actualiza tu código en texto, sin previsualizaciones. En su lugar hacer cambios y probarlos en un emulador o un dispositivo Android real.


Opción 3: combinar las 2 primeras opciones

Utilice la opción 1, haga lo que necesite hacer con los diseños (siempre y cuando no necesite nada específico de SDK 21) y cuando haya hecho, vuelva a realizar los cambios realizados en build.gradle y styles.xml para que pueda disfrutar del nuevo ojo Dulces de Lollipop, sólo prueba en un emulador o dispositivo como se sugiere en la opción 2


Opción 4: esperar que arreglen el error

solo eso.


Opción extra de largo disparo:

Si ha instalado una versión estable de Android Studio, pruebe una Beta o Canary, quien sabe, puede haber un parche implementado para resolver ese problema en uno de ellos (tengo una compilación estable, así que no sé). O pruebe en Eclipse

El error que mencionó proviene del editor de la interfaz de usuario. Esto ocurre cuando no se puede previsualizar una vista personalizada en el editor. Esto no es un problema. Si ejecuta su aplicación todo debe estar bien.

Esta es una muestra Nevigation Drawer – código de diseño del cajón, puede usarlo sin errores.

  <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/left_drawer" android:layout_width="330dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="multipleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="@drawable/gradient_gray"> [...] </FrameLayout> </android.support.v4.widget.DrawerLayout> 

Piense que es un error en la última versión de herramientas: https://code.google.com/p/android/issues/detail?id=78090

Tenemos lo mismo en el diseñador, pero al ejecutarlo está bien. Se ha trabajado sin problemas antes de la versión API del release del SDK.

  • Android Wear: ¿Hay alguna razón para utilizar un objeto Time en lugar de un objeto Calendar?
  • ¿Cómo eliminar la sombra sobre la barra de aplicaciones?
  • Diferencia entre FlurryAgent.logEvent y FlurryAgent.onEvent
  • Pasar un valor de la actividad a hilo después de hilo ya está creado
  • Cómo cambiar la línea azul en el AlertDialog (tema Holo)
  • ActionBar ERROR: Navegación de modo de lista no visible después de usar SearchView
  • Android: el caché de mapas de bits requiere mucha memoria
  • ¿Cómo detectar si el usuario tiene 3G / Wifi encendido antes de hacer la conexión de la URL?
  • Conjunto de datos para almacenar objetos en java
  • Reacondicionamiento .jar-s en Android .aar library
  • CalendarView no muestra los días del mes
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.