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.
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.
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.
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
Essayez de restituer votre aperçu à l'aide de l'aperçu Android M.
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.
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.