ปิด: Android: แอปหยุดทำงานเมื่อใช้ com.google.android.material ด้านล่าง android 9 (sdk 29)
แอพของฉันหยุดทำงานเมื่อเรียกใช้ส่วนประกอบ material.io ด้านล่าง sdk 29 ฉันใช้ธีมแอพเป็น "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.google.android.material.textfield.TextInputLayout เกิดจาก: android.view.InflateException: ไฟล์ Binary XML บรรทัด # 12: ข้อผิดพลาดในการขยายคลาส com.google.android.material.textfield.TextInputLayout เกิดจาก: java.lang.reflect InvocationTargetException ที่ java.lang.reflect.Constructor.newInstance0 (Native Method) ที่ java.lang.reflect.Constructor.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:863Inflate) ที่ android.viewrildrenoutInflate (LayoutInflater.java:824) ที่ android.view.LayoutInflater.inflate (LayoutInflater.java:515) ที่ android.view.LayoutInflater.inflate (LayoutInflater.java:423) ที่ android.view.LayoutInflater.inflate (LayoutInflater.java: 374) ที่ 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.Activity.perform (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 (Unknown Source: 0) ที่ 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) ที่ java.lang.reflect.Method.invoke (Native Method) ที่ 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) ที่ java.lang.reflect.Method.invoke (Native Method) ที่ com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240) ที่ com.android.internal.os.ZygoteInit .main (ZygoteInit.java:767)
คำตอบ
นี้ไม่ได้เป็นปัญหาที่เกี่ยวข้องกับการSDK Versionsค่อนข้างคุณกำลังใช้เครื่องมือซึ่งเป็นส่วนประกอบของcom.google.android.material.textfield.TextInputLayoutTheme.Material Components
นั่นคือสิ่งที่บรรทัดแรกของ 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,
และในบางบรรทัดมันบอกว่า: java.lang.IllegalArgumentException: The style of this component requires your app theme to be Theme.MaterialComponents (or a descendant).ซึ่งบ่นเกี่ยวกับความThemeไม่ลงรอยกันบางอย่าง
ในระยะสั้นลองเปลี่ยนการตรวจสอบรูปแบบที่จะTheme.MaterialComponentsอยู่ในความละเอียด / รูปแบบหรือหลีกเลี่ยงการใช้ชิ้นส่วนของมันเช่นTextInputLayout
นี่ก็เกิดขึ้นกับฉันเหมือนกัน
เพียงไปที่ res / styles.xml และเปลี่ยน AppTheme (หรืออะไรก็ตามที่เรียกว่าธีมแอปพลิเคชันของคุณ) แล้วเปลี่ยนพาเรนต์เป็น Theme.MaterialComponents * เท่านี้ก็เรียบร้อย
แก้ไข: หากคุณใช้งานอยู่แล้วคุณอาจต้องทำความสะอาดและสร้างโครงการใหม่หลังจากทำการเปลี่ยนแปลง