Après avoir utilisé Android Studio pour migrer mon projet vers AndroidX
(et avoir AndroidX
manuellement de nombreuses erreurs d'importation), je n'obtiens aucune erreur de compilation, mais lorsque l'application démarre, j'obtiens un plantage avec:
Error inflating class android.support.design.widget.AppBarLayout
.
La ligne incriminée dans le fichier de mise en page est: <android.support.design.widget.AppBarLayout
Mes dépendances dans build.gradle
sont:
dependencies { def lifecycle_version = '2.1.0-alpha02' // used below--will be different for androidx (migrated 2019-02-04) implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.1.0-alpha01' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0' implementation 'com.google.android.material:material:1.1.0-alpha03' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.2-alpha01' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.2-alpha01' implementation 'com.squareup.okhttp3:okhttp:3.11.0' implementation 'com.squareup.okio:okio:1.15.0' implementation 'io.reactivex.rxjava2:rxjava:2.2.5' implementation 'com.jakewharton.rxrelay2:rxrelay:2.1.0' // Relay class implementation 'com.jakewharton.rx2:replaying-share:2.1.0' // ReplayingShare implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0' // RxBinding implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" // see def above // includes ViewModel and LiveData implementation 'org.apache.commons:commons-lang3:3.8.1' // for tuples like Triple implementation 'com.androidplot:androidplot-core:1.5.6' // AndroidPlot }
Je suppose qu'il me manque quelque chose mais je ne trouve pas ce que c'est.
5 Réponses :
Selon les migrations AndroidX docs , le androidx
remplacement pour AppBarLayout est com.google.android.material.appbar.AppBarLayout
. Essayez de remplacer votre balise AppBarLayout par ceci.
Quant à savoir pourquoi la compilation / la construction fonctionne, je suppose que c'est quelque chose à voir avec Jetifier, mais je ne suis pas certain.
Vous devez utiliser com.google.android.material.appbar.AppBarLayout
.
La version 1.0.0
est déjà implementation 'androidx.appcompat:appcompat:1.0.0'
pouvez donc utiliser l' implementation 'androidx.appcompat:appcompat:1.0.0'
Ajouter l' implementation 'com.google.android.material:material:1.0.0'
dépendance implementation 'com.google.android.material:material:1.0.0'
Voir Intégration des composants matériels pour la dernière version. Et utilise
<com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> </com.google.android.material.appbar.AppBarLayout>
Pour d'autres artefacts et mappage de classes, consultez le document de migration AndroidX .
Eh bien, cette erreur a disparu, maintenant je reçois celle-ci: Error inflating class android.support.v7.widget.Toolbar
Remplacez-le par androidx.appcompat.widget.Toolbar
.
Maintenant, Error inflating class androidx.constraintlayout.ConstraintLayout
même si j'ai ceci dans les dépendances: implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
ConstraintLayout
n'a jamais fait partie de la v7
une bibliothèque distincte. Utilisez l' implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
.. Lisez le lien ci-dessus dans la réponse de Ben.
Comme vous pouvez le voir ci-dessus, c'est exactement ce que j'ai, sauf pour la version mineure.
Son androidx.constraintlayout.widget.ConstraintLayout
non androidx.constraintlayout.ConstraintLayout
. Utilisez simplement Auto complete intellisense pour utiliser le bon package en xml.
Veuillez parcourir ces anciens et nouveaux mappages de classes
par exemple; - Utilisez com.google.android.material.appbar.AppBarLayout
au lieu de android.support.design.widget.AppBarLayout
Pour AppBarLayout
Pour la barre d'outils
Belle explication
La classe de gonflage Androidx <android.support.design.widget.TabLayout/>
ne fonctionnera pas, elle n'existe pas, alors remplacez-la par <com.google.android.material.tabs.TabLayout/>
cela fonctionnera bien et n'oubliez pas d'ajouter
implementation 'com.google.android.material:material:1.1.0-alpha07'
à vos dépendances
si vous utilisez Kotlin DSL, vous devez l'ajouter à build.gradle.kts
implementation("com.google.android.material:material:1.1.0") implementation("androidx.appcompat:appcompat:1.1.0")
et dans votre mise en page, utilisez <com.google.android.material.appbar.AppBarLayout/>
Trouvez
android.support.design.widget.AppBarLayout
et remplacez-le parcom.google.android.material.appbar.AppBarLayout
au niveau de l'application (y compris les fichiers de mise en page des ressources.) Et puis une version propre!