Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Floating Action Button and design library inflation error

I'm using design support library

defaultConfig {
        vectorDrawables.useSupportLibrary = true
        ...
}

dependencies {
    compile 'com.android.support:design:23.4.0'
    compile 'com.android.support:support-v4:23.4.0'
    ...
}

when I'm adding FloatingActionButton

<android.support.design.widget.FloatingActionButton
    android:layout_gravity="right"
    android:layout_margin="20dp"
    android:tint="#fff"
    android:src="@drawable/ic_menu_manage"
    app:backgroundTint="#b3000000"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

to one of my layouts I get this error

Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.

Here's my main activity (it has navigation drawer)

public class MapNavActivity extends AppCompatActivity

I know it should work if I change AppCompatActivity to Activity

However this don't work for me. Here's the activity defined on manifest file

<activity
    android:name=".MapNavActivity"
    android:label="@string/title_activity_map_nav"
    android:theme="@style/AppTheme.NoActionBarMain" />

and here's the theme in styles.xml file

<style name="AppTheme.NoActionBarMain" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

I'm stuck with this problem almost 5 hours. Does anyone know how to solve this?

EDIT manifest file

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="rojus.zvyjybos.com.zvejybosrojus2">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CALL_PHONE" />

    <uses-feature android:name="android.hardware.sensor.accelerometer" />
    <uses-feature android:name="android.hardware.sensor.compass" />

    <application
        android:name=".start.App"
        android:allowBackup="true"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".start.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MapNavActivity"
            android:label="@string/title_activity_map_nav"
            android:theme="@style/AppTheme.NoActionBarMain" />
        <activity
            android:name=".menu_activities.LakeDetailActivity"
            android:theme="@style/AppTheme.NoActionBarMain" />
        <activity
            android:name=".menu_activities.FishActivity"
            android:theme="@style/AppTheme.NoActionBarMain" />
        <activity
            android:name=".menu_activities.BitesActivity"
            android:theme="@style/AppTheme.NoActionBarMain" />
        <activity
            android:name=".menu_activities.FishingMethodsActivity"
            android:theme="@style/AppTheme.NoActionBarMain" />
        <activity
            android:name=".fragments.MyFishingPlanDetailList"
            android:theme="@style/AppTheme.NoActionBarMain" />
        <activity
            android:name=".menu_activities.DetailPlaceActivity"
            android:theme="@style/AppTheme.NoActionBarMain" />
        <activity android:name=".augumented_reality.AugumentedActivity" />
        <activity android:name=".start.MainMenu"
            android:theme="@style/AppTheme.NoActionBarMain" />
    </application>

</manifest>

I will also add full exception

Process: rojus.zvyjybos.com.zvejybosrojus2, PID: 26070
java.lang.RuntimeException: Unable to start activity ComponentInfo{rojus.zvyjybos.com.zvejybosrojus2/rojus.zvyjybos.com.zvejybosrojus2.MapNavActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class android.support.design.widget.FloatingActionButton
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441)
   at android.app.ActivityThread.access$800(ActivityThread.java:162)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5431)
   at java.lang.reflect.Method.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)
Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class android.support.design.widget.FloatingActionButton
   at android.view.LayoutInflater.createView(LayoutInflater.java:633)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
   at android.view.LayoutInflater.parseInclude(LayoutInflater.java:916)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:802)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
   at rojus.zvyjybos.com.zvejybosrojus2.map.MapFragment.customMapView(MapFragment.java:416)
   at rojus.zvyjybos.com.zvejybosrojus2.map.MapFragment.onViewCreated(MapFragment.java:322)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
   at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
   at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
   at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:601)
   at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
   at android.app.Activity.performStart(Activity.java:6068)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2342)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441) 
   at android.app.ActivityThread.access$800(ActivityThread.java:162) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:135) 
   at android.app.ActivityThread.main(ActivityThread.java:5431) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at java.lang.reflect.Method.invoke(Method.java:372) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 
Caused by: java.lang.reflect.InvocationTargetException
   at java.lang.reflect.Constructor.newInstance(Native Method)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
   at android.view.LayoutInflater.createView(LayoutInflater.java:607)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
   at android.view.LayoutInflater.parseInclude(LayoutInflater.java:916) 
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:802) 
   at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
   at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
   at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
   at rojus.zvyjybos.com.zvejybosrojus2.map.MapFragment.customMapView(MapFragment.java:416) 
   at rojus.zvyjybos.com.zvejybosrojus2.map.MapFragment.onViewCreated(MapFragment.java:322) 
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
   at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) 
   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
   at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339) 
   at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:601) 
   at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236) 
   at android.app.Activity.performStart(Activity.java:6068) 
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2342) 
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441) 
   at android.app.ActivityThread.access$800(ActivityThread.java:162) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:135) 
   at android.app.ActivityThread.main(ActivityThread.java:5431) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at java.lang.reflect.Method.invoke(Method.java:372) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 
Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.
   at android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:34)
   at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:116)
   at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:110)
   at java.lang.reflect.Constructor.newInstance(Native Method) 
   at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
   at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
   at android.view.LayoutInflater.parseInclude(LayoutInflater.java:916) 
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:802) 
   at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
   at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
   at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
   at rojus.zvyjybos.com.zvejybosrojus2.map.MapFragment.customMapView(MapFragment.java:416) 
   at rojus.zvyjybos.com.zvejybosrojus2.map.MapFragment.onViewCreated(MapFragment.java:322) 
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
   at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) 
   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
   at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339) 
   at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:601) 
   at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236) 
   at android.app.Activity.performStart(Activity.java:6068) 
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2342) 
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441) 
   at android.app.ActivityThread.access$800(ActivityThread.java:162) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:135) 
   at android.app.ActivityThread.main(ActivityThread.java:5431) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at java.lang.reflect.Method.invoke(Method.java:372) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 
like image 672
David Avatar asked Jul 14 '16 19:07

David


1 Answers

I just tried your code in a fresh project and it is working fine on my machine. Make sure that compile 'com.android.support:appcompat-v7:23.4.0' is in your build.gradle file then do a rebuild and see if that helps. Also check your SDK manager to see if you have any old updates you haven't installed yet.

like image 130
Bill Avatar answered Nov 05 '22 10:11

Bill