2014-10-23 14 views
6

Tôi đang cố gắng triển khai Ngăn điều hướng trong ứng dụng của mình nhưng tôi gặp sự cố nghiêm trọng với nó. Ngay bây giờ vấn đề của tôi là tôi muốn đặt MainContent của tôi bên trong một Layout Drawer như thế này:Ngăn điều hướng - Bố cục ngăn kéo không thể được tạo ra

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

Nhưng tôi nhận được mã lỗi này

Các lớp sau đây không thể được khởi tạo: - android. support.v4.widget.DrawerLayout (Open class, hiện Exception)

Đây là những chi tiết ngoại lệ:

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) 

Tôi làm theo hướng dẫn này http://developer.android.com/training/implementing-navigation/nav-drawer.html Nhưng cho đến bây giờ nó không hoạt động chút nào. Có lẽ ai đó có hướng dẫn tốt hơn về cách triển khai ngăn điều hướng đúng cách với Android 5.0 ??

Cảm ơn trước vì đã được trợ giúp.

Trân trọng John

+0

Bạn có thư viện hỗ trợ trong dự án của mình không? –

+0

Tôi nghĩ vậy. Tôi đã thêm nó build.gradle của tôi dưới sự phụ thuộc --- biên dịch "com.android.support:support-v4:21.0.0"--- Tôi đã làm theo hướng dẫn này: https://developer.android.com/tools/ support-library/setup.html – JRsz

+0

bạn cũng đã thêm v7 chưa? nếu bạn đã làm bạn không cần v4 của thư viện hỗ trợ – tyczj

Trả lời

5

Got ở đây với cùng một vấn đề, trước hết, phải quan tâm đến những gì Christer Nordvik nhận xét:

nghĩ nó là một lỗi trong các công cụ phiên bản mới nhất: https://code.google.com/p/android/issues/detail?id=78090

Chúng tôi có cùng trong thiết kế, nhưng khi chạy nó là tốt. Đã làm việc không có vấn đề trước khi phát hành API cấp 21 của SDK.

Như tôi đã nhìn thấy nó, bạn có 4 lựa chọn:


Lựa chọn 1: quay trở lại Android trước 5.0 Sử dụng và biên dịch với mã của bạn với SDK 20

Thay đổi xây dựng.gradle như sau:

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

thay đổi các dòng sau vào những gì bao giờ tương ứng với dự án của bạn:

 applicationId "com.example.yourapp" 
     minSdkVersion 8 

Nhiều khả năng bạn cũng sẽ cần phải thay đổi "res \ v21 \ styles.xml" từ:

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

tới:

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

Như các chủ đề tài liệu được giới thiệu trên Lollipop/Android 5.0

Sync dự án của bạn với các tập tin gradle mới, chờ cho đồng bộ để kết thúc và bạn tốt để đi, bạn nên bây giờ nhìn thấy bản xem trước bố cục

Sync your project with Gradle Files


Phương án 2: cập nhật mã của bạn trong văn bản

mã sẽ biên dịch và làm việc tốt, chỉ cần cập nhật mã của bạn trong văn bản, không có trước iews. Thay vào đó thực hiện các thay đổi và thử chúng trên trình mô phỏng hoặc thiết bị Android thực.


Lựa chọn 3: kết hợp 2 lựa chọn đầu tiên

Sử dụng tùy chọn 1, làm những gì mà bạn cần phải làm gì để bố trí (miễn là nó không cần gì cụ thể từ các SDK 21) và khi thực hiện thay đổi trở lại thực hiện để build.gradle và styles.xml vì vậy bạn có thể thưởng thức kẹo mắt mới của Lollipop, chỉ cần thử nghiệm nó trên một giả lập hoặc thiết bị như đề xuất vào tùy chọn 2


Lựa chọn 4: chờ họ sửa chữa bug

chỉ vậy.


Chuyền dài thêm tùy chọn:

Nếu bạn đã cài đặt một xây dựng ổn định của Android Studio, hãy thử một Beta hoặc Canary, ai mà biết được, có thể là có một miếng vá được thực hiện để giải quyết vấn đề mà trên một trong số họ (tôi có một bản dựng ổn định, vì vậy tôi không biết). Hoặc thử trên Eclipse

0

Lỗi bạn đã đề cập đến từ trình chỉnh sửa giao diện người dùng. Điều này xảy ra khi không thể xem trước chế độ xem tùy chỉnh trong trình chỉnh sửa. Đây không phải là một vấn đề. Nếu bạn chạy ứng dụng của bạn tất cả mọi thứ nên được tốt.

+0

nó không sụp đổ, nhưng tôi chỉ nhận được một màn hình trắng. Gotta làm việc một chút về nó và có thể trở lại câu trả lời của bạn :) – JRsz

0

Đây là một mẫu Nevigation Drawer - Mã Drawer Layout, bạn có thể sử dụng nó với các lỗi ra ..

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

nghĩ nó là một lỗi trong các công cụ phiên bản mới nhất: https://code.google.com/p/android/issues/detail?id=78090

Chúng tôi có như vậy trong nhà thiết kế, nhưng khi chạy nó là tốt. Làm việc không có vấn đề trước khi phát hành API cấp 21 của SDK.

Các vấn đề liên quan