简体   繁体   English

充气错误 class com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton

[英]Error inflating class com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton

Although there is a similar question, it does not give me a solution.虽然有类似的问题,但没有给我解决方案。 When I'm trying to use com.google.android.material.floatingactionbutton.FloatingActionButton it runs well.当我尝试使用com.google.android.material.floatingactionbutton.FloatingActionButton时,它运行良好。 But if I try to use com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton , it gives errors.但是,如果我尝试使用com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton ,它会出错。

My code in the XML file:我在 XML 文件中的代码:

<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
    android:id="@+id/book_profile_write_review"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="20dp"
    android:contentDescription="@string/author_name"
    android:text="@string/book_name"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:srcCompat="@drawable/ic_launcher_foreground" />

logcat:日志:

2019-11-14 12:30:21.997 21326-21326/com.bookaholic.shahad.bookaholicbd E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.bookaholic.shahad.bookaholicbd, PID: 21326
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bookaholic.shahad.bookaholicbd/com.bookaholic.shahad.bookaholicbd.activities.BookProfile}: android.view.InflateException: Binary XML file line #25: Binary XML file line #25: Error inflating class com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2974)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3059)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1724)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:7000)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
 Caused by: android.view.InflateException: Binary XML file line #25: Binary XML file line #25: Error inflating class com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
 Caused by: android.view.InflateException: Binary XML file line #25: Error inflating class com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
 Caused by: java.lang.reflect.InvocationTargetException
    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.bookaholic.shahad.bookaholicbd.activities.BookProfile.onCreate(BookProfile.java:20)
    at android.app.Activity.performCreate(Activity.java:7258)
    at android.app.Activity.performCreate(Activity.java:7249)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1222)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3059)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1724)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:7000)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
 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.obtainStyledAttributes(ThemeEnforcement.java:76)
    at com.google.android.material.button.MaterialButton.<init>(MaterialButton.java:200)

Can you please help me?你能帮我么?

From your logcat从你的日志猫

Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).

So add a material theme for your app/current activity will fix this issue因此,为您的应用程序/当前活动添加材料主题将解决此问题

1) add dependency* (latest / more stable version) 1)添加依赖*(最新/更稳定的版本)

implementation 'com.google.android.material:material:1.2.0-alpha01'

2) Create a new theme 2)创建一个新主题

<style name="MyMaterialTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- Add attributes here -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="textAppearanceButton">@style/AppTextAppearance.Button</item>
</style>
 <!--To fix rendering in preview -->
 <style name="AppTextAppearance.Button" parent="TextAppearance.MaterialComponents.Button">
    <item name="android:textAllCaps">true</item>
</style>

change parent material theme according to you parent="Theme.MaterialComponents.*根据您更改父材质主题parent="Theme.MaterialComponents.*

3) change app theme or current activity theme in manifest 3)在清单中更改应用程序主题或当前活动主题

android:theme="@style/MyMaterialTheme"

or或者

<activity android:name=".MyActivity" android:theme="@style/MyMaterialTheme"> </activity>

4) If you found any rendering issue in previews, adding themes to ExtendedFloatingActionButton will fix this 4) 如果您在预览中发现任何渲染问题,将主题添加到 ExtendedFloatingActionButton 将解决此问题

Failed to find '@attr/textAppearanceButton' in current theme.

add theme to ExtendedFloatingActionButton android:theme="@style/MyMaterialTheme"将主题添加到 ExtendedFloatingActionButton android:theme="@style/MyMaterialTheme"

<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:theme="@style/MyMaterialTheme"
        android:text="ExtendedFab"            
        app:icon="@drawable/ic_add_a_photo_white_24dp"
       />

For more info visit Material Design Page欲了解更多信息,请访问材料设计页面

You need to use a an app or activity theme that is a descendant from Theme.MaterialComponents .您需要使用来自Theme.MaterialComponents的应用程序或活动theme

You can see in the trace: Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).您可以在跟踪中看到: Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).

Go to your manifest file and make sure your app and activity inherits from one of this themes: Go 到您的清单文件,并确保您的应用程序和活动继承自以下主题之一:

Theme.MaterialComponents
Theme.MaterialComponents.NoActionBar
Theme.MaterialComponents.Light
Theme.MaterialComponents.Light.NoActionBar
Theme.MaterialComponents.Light.DarkActionBar
Theme.MaterialComponents.DayNight
Theme.MaterialComponents.DayNight.NoActionBar
Theme.MaterialComponents.DayNight.DarkActionBar

EG like this:像这样的EG:

<activity android:name=".MYActivity"
        android:theme="@android:style/Theme.Light.NoTitleBar"></activity>

Here this one work for me这对我有用

 <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton android:theme="@style/MyMaterialTheme" .................. /> 



<style name="MyMaterialTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- Add attributes here -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="textAppearanceButton">@style/AppTextAppearance.Button</item>
</style>

AndroidManifest.xml AndroidManifest.xml

Update your app theme to inherit from one of these themes, eg:更新您的应用主题以继承这些主题之一,例如:

<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight">
    <!-- ... -->
</style>

build.gradle build.gradle

dependencies {
    // ...
    implementation "com.google.android.material:material:1.3.0-alpha03"
}

GL总帐

Source 资源

I've got the same error after updating to targetSdkVersion = 32. My activity already had a theme inheriting from MaterialComponents.更新到 targetSdkVersion = 32 后,我遇到了同样的错误。我的活动已经有一个从 MaterialComponents 继承的主题。 The issue was that I was setting问题是我正在设置

android:background="?selectableItemBackground" android:background="?selectableItemBackground"

to the ExtendedFloatingActionButton.到 ExtendedFloatingActionButton。 So if you're trying to override the background, it will give you error.所以如果你试图覆盖背景,它会给你错误。 Remove that and it should work.删除它,它应该可以工作。

If you plan to make an Application using material Design Componentes, consider using Theme.MaterialComponents.* because in some occasions you will face some inflating erros regarding XML如果您打算使用材料设计组件制作应用程序,请考虑使用 Theme.MaterialComponents.*,因为在某些情况下,您将面临一些关于 XML 的膨胀错误

More information about Material Design Components can be found here: MATERIAL.IO有关材料设计组件的更多信息,请参见: MATERIAL.IO

i had this problem.i checked the style folder and added feature我遇到了这个问题。我检查了样式文件夹并添加了功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 充气错误 class com.google.android.material.floatingactionbutton.FloatingActionButton 仪器测试 - Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton Instrumentation Test 错误膨胀类 com.google.android.material.appbar.AppBarLayout - Error inflating class com.google.android.material.appbar.AppBarLayout 错误膨胀类 com.google.android.material.internal.NavigationMenuItemView - Error inflating class com.google.android.material.internal.NavigationMenuItemView 膨胀错误 class com.google.android.material.textfield.TextInputLayout - Error inflating class com.google.android.material.textfield.TextInputLayout 膨胀类 com.google.android.material.bottomnavigation.BottomNavigationView 时出错 - Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView 膨胀类 com.google.android.material.tabs.TabLayout 时出错 - Error inflating class com.google.android.material.tabs.TabLayout 错误:充气 class com.google.android.material.navigation.NavigationView - Error: inflating class com.google.android.material.navigation.NavigationView 充气错误 class com.google.android.material.slider.Slider - Error inflating class com.google.android.material.slider.Slider 错误:充气 class com.google.android.material.textfield.TextInputLayout - Error: Inflating class com.google.android.material.textfield.TextInputLayout 充气时出错 class com.google.android.material.button.MaterialButton - Error inflating class com.google.android.material.button.MaterialButton
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM