Fermé: Android: l'application continue de planter lors de l'utilisation de com.google.android.material sous Android 9 (sdk 29)

Oct 09 2020

Mon application ne cesse de planter lors de l'exécution des composants material.io sous sdk 29. J'utilise également le thème de l'application comme "Theme.MaterialComponents.Light.NoActionBar".

Build.gradle

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

defaultConfig {
    applicationId "com.example.marketapplication"
    minSdkVersion 19
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
}
dependencies {

      implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.2.0'
//implementation 'com.android.support:design:28.0.0'
implementation 'com.android.volley:volley:1.1.1'
implementation 'com.github.mukeshsolanki:android-otpview-pinview:2.0.0'
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

logcat

com. InvocationTargetException sur java.lang.reflect.Constructor.newInstance0 (Méthode native) sur java.lang.reflect.Constructor.newInstance (Constructor.java:334) sur android.view.LayoutInflater.createView (LayoutInflater.java:647) sur android. view.LayoutInflater.createViewFromTag (LayoutInflater.java:790) sur android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:730) sur android.view.LayoutInflater.rInflate (LayoutInflater.java:863) sur android.view.LayoutInflater.rInflate (LayoutInflater.java:863) sur android.Childrenflater. (LayoutInflater.java:824) à android.view.LayoutInflater.inflate (LayoutInflater.java:515) à android.view.LayoutInflater.inflate (LayoutInflater.java:423) à android.view.LayoutInflater.inflate (LayoutInflater.java: 374) sur androidx.appcompat.app.AppCompatDelegateImpl.setContentView (AppCompatDe legateImpl.java:555) à androidx.appcompat.app.AppCompatActivity.setContentView (AppCompatActivity.java:161) à com.example.marketapplication.activity.LoginMainActivity.onCreate (LoginMainActivity.kt: 31) à android.app.AreateCreate (Activity.java:6975) à android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1213) à android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2770) à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java: 2892) à android.app.ActivityThread.-wrap11 (Source inconnue: 0) à android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1593) à android.os.Handler.dispatchMessage (Handler.java:105) à android.os.Looper.loop (Looper.java:164) sur android.app.ActivityThread.main (ActivityThread.java:6541) sur java.lang.reflect.Method.invoke (méthode native) sur com.android.internal. os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant). at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:243) at com.google.android.material.internal.ThemeEnforcement.checkMaterialTheme(ThemeEnforcement.java:217) at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:145) at com.google.android.material.internal.ThemeEnforcement.obtainTintedStyledAttributes(ThemeEnforcement.java:115) at com.google.android.material.textfield.TextInputLayout.(TextInputLayout.java:460) at com.google.android.material.textfield.TextInputLayout.(TextInputLayout.java:419) at java.lang.reflect.Constructor.newInstance0(Native Method)  at java.lang.reflect.Constructor.newInstance(Constructor.java:334)  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:555)  at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)  at com.example.marketapplication.activity.LoginMainActivity.onCreate(LoginMainActivity.kt:31)  at android.app.Activity.performCreate(Activity.java:6975)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)  at android.app.ActivityThread.-wrap11(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1593) à android.os.Handler.dispatchMessage (Handler.java:105) à android.os.Looper.loop (Looper.java:164) à android.app.ActivityThread.main (ActivityThread .java: 6541) sur java.lang.reflect.Method.invoke (Méthode native) sur com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240) sur com.android.internal.os.ZygoteInit .main (ZygoteInit.java:767) 

Réponses

1 ObinasBaba Oct 09 2020 at 06:44

Ce n'est pas un problème lié à SDK Versions, mais vous utilisez plutôt un widget com.google.android.material.textfield.TextInputLayoutqui est un composant de Theme.Material Components.

C'est ce que vous dit la première ligne du stacktrace com.google.android.material.textfield.TextInputLayout Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class com.google.android.material.textfield.TextInputLayout,

Et en bas à une ligne, il dit: java.lang.IllegalArgumentException: The style of this component requires your app theme to be Theme.MaterialComponents (or a descendant).qui se plaint d'une sorte d' Themeincompatibilité.

En bref, essayez de changer le thème de l'application Theme.MaterialComponentsen res / styles ou évitez d'utiliser ses composants tels queTextInputLayout

AbdulRahimKhan Oct 09 2020 at 06:39

Cela m'est arrivé aussi.

Allez simplement dans res / styles.xml et changez le AppTheme (ou quel que soit le nom de votre application), et changez son parent en Theme.MaterialComponents. * Et vous êtes prêt à partir

EDIT: si vous l'utilisez déjà, vous devrez peut-être nettoyer et reconstruire votre projet après avoir effectué le changement