关闭:安卓:在安卓9(sdk 29)以下使用com.google.Android.material时,应用程序不断崩溃



我的应用程序在运行sdk 29以下的material.io组件时不断崩溃。我使用应用程序主题作为";Theme.MaterialComponents.Light.NoActionBar"还有

构建.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.google.android.material.textfield.TextInputLayout引起原因:android.view.InflateException:二进制XML文件行#12:膨胀类com.google.android.material.textfield.TextInputLayout时出错引起原因:java.lang.reflect.InvocationTargetException位于java.lang.reflect.Constructure.newInstance0(本机方法)位于java.lang.reflect.Constructure.newInstance(Constructor.java:334)在android.view.LayoutInflater.createView(LayoutInflater.java:647)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)在android.view.LayoutInflater.rInflate(LayoutInflater.java:863)在android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)在android.view.LayoutInflater.inflature(LayoutInflater.java:515)在android.view.LayoutInflater.inflature(LayoutInflater.java:423)在android.view.LayoutInflater.inflature(LayoutInflater.java:374)位于androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDeleateImpl.java:555)位于androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)网址:com.example.marketapplication.activity.LoginMainActivity.onCreate(LoginMainActivity.kt:31)在android.app.Activity.performCreate(Activity.java:6975)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)在android.app.ActivityThread.performLaunchActivity(ActivityThreads.java:2770)在android.app.ActivityThread.handleLaunchActivity(ActivityThreads.java:2892)在android.app.ActivityThread.-wrap11(未知来源:0)在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:1593)在android.os.Handler.dispatchMessage(Handler.java:105)在android.os.Looper.loop(Looper.java:164)在android.app.ActivityThread.main(ActivityThreads.java:6541)位于java.lang.reflect.Method.ioke(本机方法)网址:com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:767)由:java.lang.IollegalArgumentException引起:此组件上的样式要求应用程序主题为theme.MaterialComponents(或子代)。网址:com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEncement.java:243)网址:com.google.android.material.internal.ThemeEnforcement.checkMaterialTheme(ThemeEncement.java:217)网址:com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEncement.java:145)网址:com.google.android.material.internal.ThemeEnforcement.ugetableIntedStyledAttributes(ThemeEncement.java:115)网址:com.google.android.material.textfield.TextInputLayout.(TextInputLayout.java:460)网址:com.google.android.material.textfield.TextInputLayout.(TextInputLayout.java:419)位于java.lang.reflect.Constructure.newInstance0(本机方法)位于java.lang.reflect.Constructure.newInstance(Constructor.java:334)在android.view.LayoutInflater.createView(LayoutInflater.java:647)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)在android.view.LayoutInflater.rInflate(LayoutInflater.java:863)在android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)在android.view.LayoutInflater.inflature(LayoutInflater.java:515)在android.view.LayoutInflater.inflature(LayoutInflater.java:423)在android.view.LayoutInflater.inflature(LayoutInflater.java:374)位于androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDeleateImpl.java:555)位于androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)网址:com.example.marketapplication.activity.LoginMainActivity.onCreate(LoginMainActivity.kt:31)在android.app.Activity.performCreate(Activity.java:6975)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)在android.app.ActivityThread.performLaunchActivity(ActivityThreads.java:2770)在android.app.ActivityThread.handleLaunchActivity(ActivityThreads.java:2892)在android.app.ActivityThread.-wrap11(未知来源:0)在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:1593)在android.os.Handler.dispatchMessage(Handler.java:105)在android.os.Looper.loop(Looper.java:164)在android.app.ActivityThread.main(ActivityThreads.java:6541)位于java.lang.reflect.Method.ioke(本机方法)网址:com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:767)

这不是与SDK Versions相关的问题,而是您使用的是作为Theme.Material Components组件的Widgetcom.google.android.material.textfield.TextInputLayout

这就是stackrace的第一行告诉你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

在某种程度上,它说:java.lang.IllegalArgumentException: The style of this component requires your app theme to be Theme.MaterialComponents (or a descendant).,它抱怨某种Theme不兼容。

简而言之,请尝试在res/styles中将应用程序主题更改为Theme.MaterialComponents,或者避免使用TextInputLayout等组件

我也遇到过这种情况。

只需转到res/styles.xml并更改AppTheme(或您的应用程序主题的名称),然后将其父级更改为theme.MaterialComponents.*,就可以使用了

编辑:如果你已经在使用它,你可能需要在完成更改后对你的项目进行清理和重建

相关内容

最新更新