web-dev-qa-db-de.com

Android Studio: Rendering-Probleme mit CoordinatorLayout

Wenn ich ein CoordinatorLayout als mein Stammelement setze, erhalte ich die folgende Fehlermeldung, wenn Android Studio eine Vorschau rendert.

Java.lang.NoClassDefFoundError: Could not initialize class Android.support.design.widget.CoordinatorLayout
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:39)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:27)
    at Java.lang.reflect.Constructor.newInstance(Constructor.Java:513)
    at org.jetbrains.Android.uipreview.ViewLoader.createNewInstance(ViewLoader.Java:413)
    at org.jetbrains.Android.uipreview.ViewLoader.loadView(ViewLoader.Java:105)
    at com.Android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.Java:177)
    at Android.view.BridgeInflater.loadCustomView(BridgeInflater.Java:214)
    at Android.view.BridgeInflater.createViewFromTag(BridgeInflater.Java:142)
    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:413)
    at com.Android.layoutlib.bridge.Bridge.createSession(Bridge.Java:321)
    at com.Android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.Java:350)
    at com.Android.tools.idea.rendering.RenderTask$2.compute(RenderTask.Java:497)
    at com.Android.tools.idea.rendering.RenderTask$2.compute(RenderTask.Java:485)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.Java:894)
    at com.Android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.Java:485)
    at com.Android.tools.idea.rendering.RenderTask.render(RenderTask.Java:590)
    at org.jetbrains.Android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.Java:644)
    at org.jetbrains.Android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.Java:79)
    at org.jetbrains.Android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.Java:586)
    at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.Java:152)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.Java:452)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.Java:402)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.Java:54)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.Java:137)
    at org.jetbrains.Android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.Java:581)
    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:351)
    at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:439)
    at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:895)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:918)
    at Java.lang.Thread.run(Thread.Java:695)

Meine Layoutdatei sieht so aus

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/main_content"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fitsSystemWindows="true">

    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/appbar_layout"
        Android:layout_width="match_parent"
        Android:layout_height="@dimen/detail_backdrop_height"
        Android:fitsSystemWindows="true"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <Android.support.design.widget.CollapsingToolbarLayout
            Android:id="@+id/collapsing_toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                Android:id="@+id/img"
                Android:layout_width="match_parent"
                Android:layout_height="match_parent"
                Android:fitsSystemWindows="true"
                Android:adjustViewBounds="true"
                Android:scaleType="centerCrop"
                app:layout_collapseMode="parallax" />

            <Android.support.v7.widget.Toolbar
                Android:id="@+id/toolbar"
                Android:layout_width="match_parent"
                Android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        </Android.support.design.widget.CollapsingToolbarLayout>

    </Android.support.design.widget.AppBarLayout>

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/detail_recyclerview"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_below="@id/appbar_layout"
        Android:layout_marginTop="-25dp"
        Android:background="@color/background_light"
        Android:paddingTop="36dp"
        Android:scrollbars="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <Android.support.design.widget.FloatingActionButton
        Android:id="@+id/fab"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentEnd="true"
        Android:layout_below="@id/appbar_layout"
        Android:layout_gravity="bottom|end"
        Android:layout_marginEnd="16dp"
        Android:layout_marginTop="-32dp"
        Android:src="@Android:drawable/ic_menu_call"
        app:layout_scrollFlags="scroll|exitUntilCollapsed" />
</Android.support.design.widget.CoordinatorLayout>

Hier ist mein build.gradle

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 22
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.godine"
        minSdkVersion 21
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
}  

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:cardview-v7:22.2.0'
    compile 'com.Android.support:recyclerview-v7:22.2.0'
    compile 'com.Android.support:design:22.2.0'
    compile 'com.Android.support:appcompat-v7:22.2.0'

    ...
}

Hat jemand eine Idee, was hier falsch sein könnte?

Bearbeiten Wie @deniz bereits in einer Antwort erwähnt, funktioniert die Vorschau mit dem neuesten Update des Android Studios

22
mvieghofer

Dies ist ein bekanntes Problem im Android Open Source Project Issue Tracker:

https://code.google.com/p/Android/issues/detail?id=175595

Die unglückliche Problemumgehung, die vom Android-Projektmitglied beschrieben wird, lautet:

Problemumgehungen: Versuchen Sie, mit der M-Vorschau mit der AS v1.3-Vorschau ODER zu rendern. Verwenden Sie FrameLayout zum Entwerfen und ändern Sie während des Debugging in Android.support.design.widget.CoordinatorLayout.

15
BrentM

Ich habe den ähnlichen Fehler von Android...coordinatorlayout behoben, der anstelle der Vorschau der Android-App angezeigt wurde:

1- Schließen Sie das Projekt

2- Starten Sie das Android Studio neu

3- Erstellen Sie das Projekt

Vielleicht hilft es jemandem.

3
Ali Mohyudin

Aktualisieren Sie das Android-Studio auf die neueste Version (Beta) 1.3-Betaversion. Menü -> "Nach Updates suchen"

Wenn Sie das Beta-Update nicht finden können, ändern Sie die Android Studio-Einstellungen (Updates). Aktualisieren Sie den Patch und rendern Sie ihn mit der Vorschau M

enter image description here

Versuchen Sie, Ihre Vorschau mit der Android M-Vorschau zu rendern.

enter image description here

3
deniz

Warten! Wechseln Sie nicht zum Betakanal.  

Seit dem 29. Juli ist Android Studio 1.3 auf stabilem Kanal veröffentlicht worden. Ich habe geprüft und kann bestätigen, dass die neue Version von IDE Ihr fragliches Problem vollständig mit CoordinatorLayout-Rendering löst. 

Android Studio 1.3 ist noch nicht auf der Android-Website veröffentlicht. Sie können jedoch ein Upgrade von Android Studio 1.2 auf 1.3 durchführen, indem Sie den Update-Patch über das Menü IDE herunterladen. Klicken Sie einfach auf: 

Hilfe -> Nach Updates suchen -> Update und Neustart

P.S. Sie benötigen weder Android M, um zu rendern. Niedrigere APIs funktionieren genauso gut.

2
Behnam

Ich hatte ein ähnliches Problem mit AppBarLayout, es scheint IDE zwischengespeichert einige falsche Version des Widgets.

File -> Invalidate Caches/Restart half mir.

1
Vasily Kabunov

Ich bin selbst wieder auf dieses Problem gestoßen.

Ich lief clean project -> restart Android studio -> build again und es funktionierte für mich.

Ich gehe davon aus, dass Android Studio mit AndroidX und der alten Support-Bibliothek einen seltsamen Cache hatte.

10/10 gute Bauwerkzeuge.

0
Darrien