Error inflating class android.support.design.widget.FloatingActionButton in Android

南楼画角 提交于 2019-12-29 01:15:13

问题


When I'm trying to build the application it will show the android.view.InflateException in FloatingActionButton? I really don't know what causes the error.

Login.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:background="@drawable/bg_image" >
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/lLayout_logincontainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="40dp"
        android:orientation="vertical">
        <ImageView
            android:layout_width="130dp"
            android:layout_height="125dp"
            android:src="@drawable/project"/>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp">


            <EditText
                android:id="@+id/aTxt_UserName"
                style="@style/edittextstyle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="User Name"
                android:imeOptions="actionNext"
                android:textColorHint="@color/white"
                >

            </EditText>


        </android.support.design.widget.TextInputLayout>

        <!--  Password Label -->
        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginTop="8dp">

            <EditText
                android:id="@+id/eTxt_PassWord"
                style="@style/edittextstyle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Password"
                android:inputType="textPassword"
                android:textColorHint="@color/white"
                android:textColor="@color/white" />

        </android.support.design.widget.TextInputLayout>

        <android.support.v7.widget.AppCompatButton
            android:id="@+id/btn_login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_marginTop="3dp"
            android:background="@drawable/button_shape"
            android:padding="12dp"
            android:text="Login"
            android:textAllCaps="false"
            android:textColor="#ffffff" />
    </LinearLayout>


</RelativeLayout>
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:layout_gravity="bottom|end"
        android:layout_marginRight="@dimen/fab_margin"
        android:visibility="visible"
        app:backgroundTint="@color/colorTrade_2"
        app:elevation="6dp"
        app:pressedTranslationZ="12dp"
        app:fabSize="normal"
        app:rippleColor="@android:color/transparent"
        android:src="@drawable/ic_user_add" />

</android.support.design.widget.CoordinatorLayout>

styles.xml

<resources>
    <style name="AppBaseTheme" parent="MyMaterialTheme.Base">
       </style>
    <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColor">@color/colorPrimaryDark</item>
        <item name="android:itemBackground">@color/white</item>
    </style>
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    <style name="AppTabTextAppearance" parent="TextAppearance.Design.Tab">
        <item name="android:textSize">12sp</item>
        <item name="textAllCaps">false</item>
    </style>
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
    <style name="edittextstyle">
        <item name="android:textColor">@color/white</item>
        <item name="android:textSize">14sp</item>
        <item name="android:padding">10dp</item>
        <item name="android:singleLine">true</item>
        <item name="android:textColorHint">@color/white</item>
        <item name="android:inputType">textFilter</item>
    </style>
    <style name="userProfileText">
        <item name="android:textColor">@color/white</item>
        <item name="android:textSize">14sp</item>
        <item name="android:padding">5dp</item>
    </style>
</resources>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android" package="com.trade.seems">
<uses-library android:name="com.google.android.maps" android:required="true" />
<application android:allowBackup="true"
    android:name=".utils.MyApplication"
             android:isolatedProcess="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:largeHeap="true"
    android:theme="@style/AppTheme">
    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    <meta-data android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_api_key" />
    <activity android:name=".uil.SplashActivity"
        android:screenOrientation="sensorPortrait">
         <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    </activity>
    <activity android:name=".ual.login.LoginActivity"
        android:screenOrientation="sensorPortrait"/>
</application>
</manifest>

build.gradle

apply plugin: 'com.android.application'
android {
    compileSdkVersion 23
    buildToolsVersion '23.0.3'
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        applicationId "com.trade.seems"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true

    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/maven/ch.acra/acra/pom.xml'
        exclude 'META-INF/maven/ch.acra/acra/pom.properties'

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    dexOptions {
        javaMaxHeapSize "2g"
    }
}

dependencies {
    testCompile 'junit:junit:4.12'
    compile files('libs/picasso-2.5.2.jar')
    compile files('libs/httpclient-4.3.6.jar')
    compile files('libs/httpcore-4.3.3.jar')
    compile files('libs/httpmime-4.3.6.jar')
    compile files('libs/YouTubeAndroidPlayerApi.jar')
    compile fileTree(include: ['*.jar'], dir: 'libs')
    /*Support Libraries */
    compile project(':autocomplete_library')
    compile project(':ViewPagerIndicator-Library')
    /*Third party Libraries */
    compile 'es.guiguegon:gallerymodule:1.3.1'
    compile 'de.hdodenhof:circleimageview:2.0.0'
    compile 'com.nineoldandroids:library:2.4.+'
    compile 'com.makeramen:roundedimageview:2.0.1'
    //Library to handle Material design for all Version of android
    compile 'com.rengwuxian.materialedittext:library:2.1.4'
    //Library Glide is to handle Images Instead of picasso
    compile 'com.github.bumptech.glide:glide:3.5.2'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'


    /*Google  Android Support Library*/
    compile 'com.google.android.gms:play-services-maps:9.4.0'
    compile 'com.google.android.gms:play-services-location:9.4.0'
    compile 'com.android.support:multidex:1.0.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:support-v4:23.1.1' 
}

Complete Error Trace

com.trade.seems E/AndroidRuntime: FATAL EXCEPTION: main Process: com.trade.seemys, PID: 8225 java.lang.RuntimeException: Unable to start activityComponentInfo{com.tradezap.seemysteps/com.trade.seems.ual.login.LoginActivity}: android.view.InflateException: Binary XML file line #84: Binary XML file line #84: Error inflating class android.support.design.widget.FloatingActionButton
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                               at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                               at android.os.Looper.loop(Looper.java:148)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                            Caused by: android.view.InflateException: Binary XML file line #84: Binary XML file line #84: Error inflating class android.support.design.widget.FloatingActionButton
                                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                               at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
                                                                               at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                               at com.trade.seems.ual.login.LoginActivity.onCreate(LoginActivity.java:55)
                                                                               at android.app.Activity.performCreate(Activity.java:6251)
                                                                               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                               at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                               at android.os.Looper.loop(Looper.java:148) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                            Caused by: android.view.InflateException: Binary XML file line #84: Error inflating class android.support.design.widget.FloatingActionButton
                                                                               at android.view.LayoutInflater.createView(LayoutInflater.java:645)
                                                                               at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
                                                                               at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                                               at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
                                                                               at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
                                                                               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 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
                                                                               at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                               at com.trade.seems.ual.login.LoginActivity.onCreate(LoginActivity.java:55) 
                                                                               at android.app.Activity.performCreate(Activity.java:6251) 
                                                                               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                               at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                               at android.os.Looper.loop(Looper.java:148) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                            Caused by: java.lang.reflect.InvocationTargetException
                                                                               at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                               at android.view.LayoutInflater.createView(LayoutInflater.java:619)
                                                                               at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
                                                                               at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
                                                                               at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
                                                                               at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
                                                                               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 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
                                                                               at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                               at com.trade.seems.ual.login.LoginActivity.onCreate(LoginActivity.java:55) 
                                                                               at android.app.Activity.performCreate(Activity.java:6251) 
                                                                               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                               at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                               at android.os.Looper.loop(Looper.java:148) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                            Caused by: java.lang.NoSuchMethodError: No direct method <init>(Landroid/widget/ImageView;Landroid/support/v7/widget/AppCompatDrawableManager;)V in class Landroid/support/v7/widget/AppCompatImageHelper; or its super classes (declaration of 'android.support.v7.widget.AppCompatImageHelper' appears in /data/app/com.tradezap.seemysteps-1/base.apk)
                                                                               at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:133)
                                                                               at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:110)
                                                                               at java.lang.reflect.Constructor.newInstance(Native Method) 
                                                                               at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
                                                                               at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
                                                                               at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
                                                                               at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
                                                                               at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
                                                                               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 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
                                                                               at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                               at com.trade.seems.ual.login.LoginActivity.onCreate(LoginActivity.java:55) 
                                                                               at android.app.Activity.performCreate(Activity.java:6251) 
                                                                               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                               at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                               at android.os.Looper.loop(Looper.java:148) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

回答1:


In your Case, Problem is in your styles.xml, your base theme name is AppBaseTheme. Change it to AppTheme as you can see you have used AppTheme in your Mainfest file.

I have listed all the reasons that may cause class android.support.design.widget.FloatingActionButton. Please read the points carefully.

  1. FAB button is Design Library Cpmponent. Your Activity must extend AppCompatActivity instead of Activity.

  2. Your activity theme also should be appropriate Theme.AppCompat theme. Also FAB requires colorAccent. Make sure you have them inside your styles.xml.

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Base.AppTheme">
    <!-- Customize your theme here. -->
    </style>
    
    <style name="Base.AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <item name="android:colorAccent">@color/accent</item>
    </style>
    
  3. Use app:backgroundTint="@color/your_color" instead of android:backgroundTint.

  4. Don't miss out on adding design library inside your project build.gradle file

    dependencies {
     compile 'com.android.support:appcompat-v7:23.1.1'
     compile 'com.android.support:design:23.1.1'
     ...
    }
    
  5. Update Support Library on SDK Manager in Extras > Android Support Repository and Android Support Library

Hope it solves your error.




回答2:


If you are using backgroundTint on the API 21+ then just use this line in FloatingActionButton (app instead of android):

app:backgroundTint="@color/colorAccent"

Here is the sample layout

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:elevation="6dp"
        android:tint="#FFF"
        app:srcCompat="@drawable/ic_add_black_24dp" />

</android.support.design.widget.CoordinatorLayout>


来源:https://stackoverflow.com/questions/39916850/error-inflating-class-android-support-design-widget-floatingactionbutton-in-andr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!