web-dev-qa-db-fra.com

Android Studio: Problèmes de rendu avec CoordinatorLayout

Lorsque je définit un CoordinatorLayout comme élément racine, l'erreur suivante s'affiche lorsque Android Studio affiche un aperçu.

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)

Mon fichier de présentation ressemble à ceci

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

Voici mon 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'

    ...
}

Est-ce que quelqu'un a une idée de ce qui pourrait être faux ici?

Edit Comme @deniz l'a déjà mentionné dans une réponse, l'aperçu fonctionne avec la dernière mise à jour d'Android Studio.

22
mvieghofer

Il s'agit d'un problème connu dans le suivi des problèmes des projets Open Source Android:

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

La solution de rechange malheureuse décrite par le membre du projet Android est la suivante:

Solutions de contournement: essayez de rendre l'aperçu M à l'aide de l'aperçu AS v1.3 OU utilisez FrameLayout pour la conception et passez à Android.support.design.widget.CoordinatorLayout lors du débogage.

15
BrentM

J'ai résolu l'erreur similaire de Android...coordinatorlayout qui apparaît à la place de l'aperçu de l'application Android par:

1- Fermer le projet

2- Redémarrer le studio Android

3- Construire le projet

Peut-être que cela aidera quelqu'un.

3
Ali Mohyudin

Mise à jour du studio Android vers la dernière version (version bêta) 1.3 version bêta. Menu -> "Rechercher les mises à jour"

Si vous ne trouvez pas la mise à jour bêta, modifiez les paramètres du studio Android (Updates), mettez à jour ce patch et restituez-le avec M preview

enter image description here

Essayez de restituer votre aperçu à l'aide de l'aperçu Android M.

enter image description here

3
deniz

Attendre! Ne pas basculer sur le canal bêta.  

À compter du 29 juillet, Android Studio 1.3 est sorti sur canal stable. J'ai vérifié et je peux confirmer que la nouvelle version de IDE résout complètement votre problème en question avec le rendu CoordinatorLayout

Android Studio 1.3 n'est pas encore publié sur le site Web Android. Néanmoins, vous pouvez mettre à niveau votre Android Studio de 1.2 à 1.3 en téléchargeant le correctif de mise à jour à l'aide du menu IDE. Cliquez simplement sur: 

Aide -> Rechercher les mises à jour -> Mettre à jour et redémarrer

P.S. Vous n'avez pas besoin d'Android M pour le rendu non plus. Les API inférieures fonctionnent aussi bien.

2
Behnam

J'ai rencontré ce problème à nouveau moi-même.

J'ai couru clean project -> restart Android studio -> build again et cela a fonctionné pour moi.

Je suppose que Android Studio avait un cache étrange avec AndroidX et l'ancienne bibliothèque de support.

10/10 bons outils de construction.

0
Darrien