J'essaie d'implémenter un BottomNavigationView, je suis conscient qu'il y a plusieurs réponses à la même question mais aucune d'elles ne semble fonctionner pour moi.
J'ai suivi ce matériel doc
En mode aperçu, j'obtiens cette erreur
Process: pt.myapp.android.myapp.debug, PID: 13653 java.lang.RuntimeException: Unable to start activity ComponentInfo{pt.myapp.android.myapp.debug/pt.myapp.android.myapp.ui.activities.TestActivity}: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:647) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) at android.view.LayoutInflater.inflate(LayoutInflater.java:515) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at pt.myapp.android.myapp.ui.activities.TestActivity.onCreate(TestActivity.java:13) at android.app.Activity.performCreate(Activity.java:7136) at android.app.Activity.performCreate(Activity.java:7127) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0 at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:216) at android.content.res.Resources.getColorStateList(Resources.java:1031) 2019-02-10 14:47:12.350 13653-13653/pt.myapp.android.myapp.debug E/AndroidRuntime: at android.content.Context.getColorStateList(Context.java:642) at androidx.appcompat.content.res.AppCompatResources.getColorStateList(AppCompatResources.java:67) at com.google.android.material.bottomnavigation.BottomNavigationMenuView.createDefaultColorStateList(BottomNavigationMenuView.java:467) at com.google.android.material.bottomnavigation.BottomNavigationMenuView.<init>(BottomNavigationMenuView.java:101) at com.google.android.material.bottomnavigation.BottomNavigationMenuView.<init>(BottomNavigationMenuView.java:86) at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:123) at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:114) ... 28 more
Quand j'exécute TestActivity, j'obtiens une erreur gonflant la classe
Pour ce que j'ai pu comprendre à partir des réponses dans différents articles, c'est un problème de ressources.
J'ai essayé de supprimer chaque appel de ressource, mais même avec juste la largeur et la hauteur définies, je toujours l'erreur.
TestActivity
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'io.fabric' apply plugin: 'kotlin-kapt' android { lintOptions { checkReleaseBuilds false abortOnError false } compileSdkVersion 28 useLibrary 'org.apache.http.legacy' defaultConfig { applicationId "pt.myapp.android.myapp" minSdkVersion 16 targetSdkVersion 28 versionCode 42 versionName "v1.5.0d" vectorDrawables.useSupportLibrary = true multiDexEnabled true } signingConfigs { config { Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) storeFile file(properties.getProperty('storeFile')) keyAlias properties.getProperty('keyAlias') storePassword properties.getProperty('storePassword') keyPassword properties.getProperty('keyPassword') } } dataBinding { enabled = true } buildTypes { release { signingConfig signingConfigs.config minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFile "proguard-butterknife-7.pro" proguardFile "proguard-google-play-services.pro" proguardFile "proguard-support-v7-appcompat.pro" proguardFile "proguard-joda.pro" } debug { debuggable true signingConfig signingConfigs.config applicationIdSuffix ".debug" } } compileOptions { targetCompatibility 1.8 sourceCompatibility 1.8 } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation project(':FloatingView') implementation 'de.hdodenhof:circleimageview:2.2.0' /* Multidex */ implementation 'androidx.multidex:multidex:2.0.1' implementation 'com.github.lzyzsd:circleprogress:1.2.1' /* FACEBOOK */ implementation 'com.facebook.android:facebook-android-sdk:4.35.0' implementation 'com.facebook.android:facebook-login:4.35' implementation 'com.github.wrdlbrnft:sorted-list-adapter:0.2.0.1' implementation 'com.github.chrisbanes:PhotoView:1.3.0' implementation 'com.scottyab:aescrypt:0.0.1' implementation 'com.github.traex.rippleeffect:library:1.3' implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'com.miguelcatalan:materialsearchview:1.4.0' implementation 'com.github.rahatarmanahmed:circularprogressview:2.5.0' implementation 'com.jakewharton:butterknife:8.8.1' implementation 'im.dacer:AndroidCharts:1.0.4' implementation 'com.github.greenfrvr:rubber-loader:1.1.2@aar' /* SUPPORT LIBRARY */ implementation 'com.google.android.material:material:1.0.0' implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.cardview:cardview:1.0.0' implementation "androidx.recyclerview:recyclerview:1.0.0" implementation "androidx.legacy:legacy-support-v4:1.0.0" implementation "androidx.preference:preference:1.0.0" implementation "androidx.annotation:annotation:1.0.1" implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation "androidx.palette:palette:1.0.0" /* FIREBASE */ implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9' implementation 'com.google.firebase:firebase-core:16.0.7' implementation 'com.google.firebase:firebase-messaging:17.3.4' implementation "com.google.firebase:firebase-appindexing:17.1.0" implementation "com.google.firebase:firebase-auth:16.1.0" implementation "com.google.firebase:firebase-storage:16.0.5" implementation 'com.firebase:firebase-jobdispatcher:0.8.5' implementation 'com.firebaseui:firebase-ui-auth:3.3.1' implementation "com.google.firebase:firebase-ads:17.1.3" implementation "com.google.firebase:firebase-config:16.3.0" implementation "com.google.firebase:firebase-perf:16.2.3" implementation "com.google.firebase:firebase-database:16.0.6" implementation "com.google.firebase:firebase-appindexing:17.1.0" implementation 'com.firebaseui:firebase-ui-storage:0.6.0' // Room components implementation "androidx.room:room-runtime:2.1.0-alpha04" annotationProcessor "androidx.room:room-compiler:2.1.0-alpha04" androidTestImplementation "androidx.room:room-testing:2.1.0-alpha04" // Lifecycle components implementation "androidx.lifecycle:lifecycle-extensions:2.0.0" annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.0.0" /* Retrofit */ implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation 'com.squareup.retrofit2:retrofit-converters:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.4.0' implementation 'joda-time:joda-time:2.9.9' testImplementation 'junit:junit:4.12' implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT' annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT' debugImplementation 'com.sothree.slidinguppanel:library:3.3.1' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" kapt "com.android.databinding:compiler:3.3.0-alpha08" } kapt { generateStubs = true } apply plugin: 'com.google.gms.google-services' repositories { mavenCentral() }
test.xml
XXX
bottom_navigation_menu
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:color="#ffffff" /> <item android:state_checked="false" android:color="#ffffff" /> </selector>
bottom_navigation_colors.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/nav_first_page" android:icon="@drawable/page" android:title="page" app:showAsAction="always" /> </menu>
gradle
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" mlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="56dp" android:layout_gravity="bottom" android:background="@color/colorPrimary" app:itemIconTint="@drawable/bottom_navigation_colors" app:itemTextColor="@drawable/bottom_navigation_colors" app:menu="@menu/bottom_navigation_menu" /> </FrameLayout>
Erreur
import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import pt.myapp.android.myapp.R; public class TestActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); } }
4 Réponses :
Utilisez le thème de l'activité Theme.MaterialComponents.DayNight
Je n'utilisais pas de thèmes Material sur certaines parties de mon application, j'ai mis à jour chaque thème vers Material et cela a fonctionné. J'ai pu résoudre ce problème il y a longtemps, mais c'est la bonne réponse, je vais donc la marquer comme telle
Dans Cette ligne peut provoquer une erreur de gonflement:
Je l'ai résolu en gardant mes fichiers dessinables dans le dossier: BottomNavigationView
, une erreur de gonflement peut se produire en raison de XML, elle peut être soit dans @layout
, @drawable
, @style ou dossier
@color
. <com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_gravity="bottom"
android:background="@color/colorPrimary"
app:itemIconTint="@drawable/bottom_navigation_colors"
app:itemTextColor="@drawable/bottom_navigation_colors"
app:menu="@menu/bottom_navigation_menu" />
app:menu="@menu/bottom_navigation_menu"
Veuillez vous assurer que vous mettez les drawables dans le dossier res / drawable
et non dans res / drawable-24
. J'ai eu un problème similaire et en déplaçant les fichiers dans le dossier res / drawable
, l'erreur a disparu.
Allez dans votre style et supprimez "android: textColorSecondary". Cela devrait résoudre votre problème.
avez-vous essayé de changer la couleur de bottom_navigation_colors.xml en une couleur prédéfinie. ajoutez votre couleur au fichier de couleurs dans les valeurs puis utilisez-les, essayez également d'ajouter un FF supplémentaire afin qu'ils soient #FFFFFFFF pour la transparence
Oui, j'ai essayé cela aussi, j'ai ajouté un FF supplémentaire et déplacé la couleur dans le fichier de couleurs mais je n'ai pas fonctionné
ce message fonctionne stackoverflow. com / questions / 40325422 /… , essayez de supprimer l'application: showAsAction = "always" comme pour le menu de la barre d'outils
suppression de l'application: showAsAction n'a pas aidé, j'ai ajouté la bibliothèque de conception à build.grade et j'ai essayé d'utiliser ... widget.BottomNavigationView mais Android n'est pas capable de trouver la classe, il ne trouve que .... material.bottomnavigation.BottomNavigationView
changez-le en material.bottomnavigation.BottomNavigationView
c'est ce que j'utilise