2014-10-23 5 views
6

Ich versuche eine Navigationsschublade in meiner App zu implementieren, aber ich habe ernsthafte Probleme damit. Gerade jetzt mein Problem ist, dass ich mag mein maincontent in einem Fach-Layout so:Navigationsschublade - Schubladenlayout kann nicht instanziiert werden

<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> 

Aber ich habe diesen Fehlercode

Die folgenden Klassen können nicht instanziiert werden: - Android. support.v4.widget.DrawerLayout (Offene Klasse, Show Exception)

Dies sind die Ausnahme-Details:

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) 

Ich folge dieser Anleitung http://developer.android.com/training/implementing-navigation/nav-drawer.html Aber bis jetzt funktioniert es überhaupt nicht. Vielleicht hat jemand ein besseres Tutorial, wie man eine Navigationsschublade mit Android 5.0 richtig implementiert?

Vielen Dank im Voraus für jede Hilfe.

Mit freundlichen Grüßen John

+0

Haben Sie die Support-Bibliothek in Ihrem Projekt? –

+0

Ich denke schon. Ich habe es zu meinem Build.gradle unter Abhängigkeiten hinzugefügt --- kompilieren "com.android.support:support-v4:21.0.0"--- Ich folgte diesem Leitfaden: https://developer.android.com/tools/ support-library/setup.html – JRsz

+0

hast du auch v7 hinzugefügt? Wenn Sie nicht brauchen, brauchen Sie nicht v4 der Support-Bibliothek – tyczj

Antwort

5

Haben hier mit dem gleichen Problem, vor allem darauf achten, was Christer Nordvik kommentiert:

Denken Sie es ein Fehler in der neuesten Tools Version ist: https://code.google.com/p/android/issues/detail?id=78090

Wir haben die gleiche im Designer, aber beim Laufen ist es in Ordnung. Arbeitete ohne Probleme vor der API-Version 21 des SDK.

Wie ich es sehe haben Sie 4 Optionen:


Option 1: zurück zu Android pre 5.0 Verwenden und kompilieren mit Ihrem Code mit SDK 20

ändern zu bauen.gradle auf die folgenden:

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' 
} 

ändern Sie die folgenden Zeilen zu dem, was zu einem Projekt entspricht überhaupt:

 applicationId "com.example.yourapp" 
     minSdkVersion 8 

Wahrscheinlich müssen Sie auch von „res \ v21 \ styles.xml“ ändern:

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

zu:

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

Da die Material Themen sind auf Lollipop/Android eingeführt 5,0

Synchronisieren Sie Ihr Projekt mit dem neuen gradle Datei, warten, bis die Synchronisierung abgeschlossen ist, und Sie sind gut zu gehen, sollten Sie jetzt die Layout-Vorschau

sehen Sync your project with Gradle Files


Option 2: Code in Text

-Code ganz gut, kompiliert und Arbeit aktualisieren Sie einfach den Code in Text aktualisieren, nicht zurück Ansichten. Stattdessen Änderungen vornehmen und sie auf einem Emulator oder einem tatsächlichen Android-Gerät ausprobieren.


Option 3:

Verwenden Option 1, tut die ersten zwei Optionen kombinieren, was auch immer müssen Sie das Layout tun (solange es nicht nichts 21 spezifisch von SDK nicht benötigt) und wenn zurückkehren Änderungen vorgenommen getan build.gradle und styles.xml, damit Sie die neuen Augenschmaus von Lollipop genießen können, nur testen Sie es auf einem Emulator oder Gerät wie auf Option vorgeschlagen 2


Option 4: warten sie reparieren das Fehler

nur das.


Totale zusätzliche Option:

Wenn Sie eine stabile Version von Android Studio installiert haben, versuchen, einen Beta oder Kanarienvogel, der dort sein weiß, kann ein Patch, das Problem implementiert ist zu lösen auf einer von ihnen (ich habe einen stabilen Build, also weiß ich nicht). Oder versuchen Sie Eclipse

0

Der Fehler kommt aus dem UI-Editor erwähnt. Dies passiert, wenn eine benutzerdefinierte Ansicht nicht im Editor in der Vorschau angezeigt werden kann. Dies ist kein Problem. Wenn Sie Ihre Anwendung ausführen, sollte alles in Ordnung sein.

+0

es stürzt nicht ab, aber ich bekomme nur einen weißen Bildschirm. Ich muss ein bisschen daran arbeiten und vielleicht auf deine Antwort zurückkommen :) – JRsz

0

Dies ist ein Beispiel nevigation Drawer - Schublade Layout-Code, können Sie es mit aus Fehlern verwenden können ..

<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>