【问题标题】:The style on this component requires your app theme to be Theme.AppCompat此组件的样式要求您的应用主题为 Theme.AppCompat
【发布时间】:2023-03-18 09:05:01
【问题描述】:

我正在尝试使用这个库https://github.com/jaiselrahman/FilePicker。当我使用以下代码启动活动时,出现异常。

Intent intent = new Intent(getApplicationContext(), FilePickerActivity.class);
                startActivityForResult(intent, FILE_REQUEST_CODE);```

解决此错误的方法是使用我已经拥有但的 Theme.AppCompat 仍然遇到同样的错误。

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat">

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mindedges.beephourly/com.jaiselrahman.filepicker.activity.FilePickerActivity}: android.view.InflateException: Binary XML file line #24: Binary XML file line #24: Error inflating class com.google.android.material.appbar.AppBarLayout
                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 #24: Binary XML file line #24: Error inflating class com.google.android.material.appbar.AppBarLayout
             Caused by: android.view.InflateException: Binary XML file line #24: Error inflating class com.google.android.material.appbar.AppBarLayout
             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:141)
                at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:100)
                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: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant).
                at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:240)
                at com.google.android.material.internal.ThemeEnforcement.checkAppCompatTheme(ThemeEnforcement.java:211)
        2019-12-08 12:48:24.552 26689-26689/com.mindedges.beephourly E/AndroidRuntime:     at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:146)
                at com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(ThemeEnforcement.java:78)
                at com.google.android.material.appbar.ViewUtilsLollipop.setStateListAnimatorFromAttrs(ViewUtilsLollipop.java:45)
                at com.google.android.material.appbar.AppBarLayout.<init>(AppBarLayout.java:194)
                at com.google.android.material.appbar.AppBarLayout.<init>(AppBarLayout.java:180)
                    ... 28 more

My module gradle file:

    apply plugin: 'com.android.application'

    android {
        compileSdkVersion 28
        buildToolsVersion '28.0.3'

        defaultConfig {
            applicationId "com.mindedges.beephourly"
            minSdkVersion 23
            targetSdkVersion 28
        }

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

    dependencies {
        implementation 'androidx.legacy:legacy-support-v4:1.0.0'
        implementation files('libs/AppRate_1.1.jar')
        //implementation 'com.google.android.gms:play-services-ads:17.0.0'
        implementation 'com.github.jayschwa:AndroidSliderPreference:v1.0.1'

        implementation 'com.google.firebase:firebase-core:17.2.1'
        implementation 'com.google.firebase:firebase-ads:17.0.0'
        implementation 'com.google.firebase:firebase-messaging:17.3.3'
        implementation 'com.google.firebase:firebase-iid:17.0.0'

        implementation 'com.android.billingclient:billing:1.2'
        implementation 'androidx.appcompat:appcompat:1.0.0'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
        implementation 'com.codemybrainsout.rating:ratingdialog:1.0.8'


        //implementation 'com.google.android.material:material:1.0.0'
        implementation 'com.google.android.material:material:1.1.0-alpha03'
        implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'

        implementation 'com.github.jaiselrahman:FilePicker:1.3.0'
        implementation 'com.android.support:multidex:1.0.3'
    }

    apply plugin: 'com.google.gms.google-services'


【问题讨论】:

  • 你的模块级别可以build.gradle吗?

标签: android android-appcompat android-theme


【解决方案1】:

问题就在这里:

Intent intent = new Intent(getApplicationContext(), FilePickerActivity.class);

您必须传递 Activity 作为上下文而不是 getApplicationContext()
ApplicationContext 没有应用主题。

【讨论】:

    【解决方案2】:

    您的模块级别 build.gradle 中可能缺少 material

    implementation 'com.google.android.material:material:1.1.0-alpha03'
    

    不要将support 库与AndroidX 混用。使用AndroidX 版本的multidex

    implementation 'androidx.multidex:multidex:2.0.1'
    

    【讨论】:

    • 我已经在我的应用程序中实现了 'com.google.android.material:material:1.0.0'。还尝试使用你建议的版本仍然是同样的问题
    • 使用 `implementation 'androidx.multidex:multidex:2.0.1' 代替支持版本
    • 不要将support 库与AndroidX 混用。它会导致很多问题。肯定会导致问题
    猜你喜欢
    • 2021-05-09
    • 1970-01-01
    • 2022-07-12
    • 2021-05-01
    • 1970-01-01
    • 2019-04-27
    • 2020-09-07
    相关资源
    最近更新 更多