2014-10-23 9 views
6

Próbuję zaimplementować szufladę nawigacji w mojej aplikacji, ale mam z nią poważne problemy. Teraz mój problem jest, że chcę umieścić moje Maincontent wewnątrz układu szuflady tak:Szuflada nawigacji - Układ szuflady nie może być utworzony w postaci instancji

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

Ale mam ten kod błędu

Poniższe klasy nie mógł być instancja: - Android. support.v4.widget.DrawerLayout (Open Class, Pokaż Exception)

są szczegóły wyjątku:

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) 

Postępuję zgodnie z tym przewodnikiem http://developer.android.com/training/implementing-navigation/nav-drawer.html Ale do tej pory to w ogóle nie działa. Może ktoś ma lepszy samouczek, jak poprawnie zaimplementować szufladę nawigacji w systemie Android 5.0?

Z góry dziękuję za pomoc.

poważaniem John

+0

Czy masz bibliotekę wsparcia w swoim projekcie? –

+0

Myślę, że tak. Dodałem go do mojego build.gradle pod zależnościami --- kompilacja "com.android.support:support-v4:21.0.0"--- Postępowałem zgodnie z tym przewodnikiem: https://developer.android.com/tools/ support-library/setup.html – JRsz

+0

czy dodałeś także v7? jeśli nie potrzebujesz v4 biblioteki wsparcia – tyczj

Odpowiedz

5

tu mamy z tym samym problemem, przede wszystkim należy zwrócić uwagę na to, co Christer Nordvik komentuje:

uważamy, że jest to błąd w najnowszej wersji narzędzia: https://code.google.com/p/android/issues/detail?id=78090

Mamy takie same w projektancie, ale podczas pracy jest w porządku. Przetworzono bez problemów przed wydaniem pakietu SDK na poziomie interfejsu API 21.

Jak widzę to masz 4 opcje:


Opcja 1: Powrót do Androida pre 5,0 Użyj i skompilować kod z SDK 20

Zmień kompilacji.Gradle do poniższego:

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

zmienić następujące linie do czego kiedykolwiek odpowiada projektu:

 applicationId "com.example.yourapp" 
     minSdkVersion 8 

Najprawdopodobniej będzie trzeba także zmienić „res \ V21 \ styles.xml” z:

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

do:

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

jako materiał motywy są wprowadzane na Lollipop/Android 5.0

Sync projekt z nowego pliku Gradle, czekać na synchronizację do końca i jesteś dobry, aby przejść, należy teraz zobaczyć podgląd układ

Sync your project with Gradle Files


Opcja 2: zaktualizuj kod w tekście

kod zostanie skompilowany i pracy w porządku, po prostu zaktualizować swój kod w tekście, nie prev iews. Zamiast tego zmieniaj i wypróbuj je na emulatorze lub na prawdziwym urządzeniu z Androidem.


Wariant 3: połączyć 2 pierwsze opcje

Użyj opcji 1, robić to, co kiedykolwiek trzeba zrobić, aby układy (o ile nie potrzebuje nic konkretnego z SDK 21) i kiedy odbywa się cofnąć zmiany zrobione do build.gradle i styles.xml, dzięki czemu można cieszyć się nową eye candy z Lollipop, po prostu przetestować go na emulatorze lub urządzeniu zgodnie z sugestią na opcję 2


Wariant 4: czekaj naprawiają bug

właśnie to.


Długi strzał dodatkowa opcja:

Jeśli zainstalowano stabilny build Android Studio, spróbuj Beta lub Kanaryjskich, kto wie, może nie jest to poprawka realizowane rozwiązać ten problem na jeden z nich (mam stabilną budowę, więc nie wiem). Lub spróbuj w Eclipse

0

Błąd wspomniałeś pochodzi od redakcji UI. Dzieje się tak, gdy niestandardowego widoku nie można wyświetlić w edytorze. To nie jest problem. Jeśli uruchomisz aplikację, wszystko powinno być w porządku.

+0

to nie ulega awarii, ale mam tylko biały ekran. Muszę trochę nad tym popracować i być może wrócić do twojej odpowiedzi :) – JRsz

0

To jest przykład Nevigation szuflada - Szuflada Układ kod, można go używać z błędów ..

<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> 
Powiązane problemy