10

Я использую для поддержки проектов библиотекиПлавающие кнопки действий и ошибок

defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
     ... 
} 

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

, когда я добавляю 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" /> 

к одному из моих макетов дизайна библиотека инфляции я получаю эту ошибку

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

Основное Мои обязанности (it has navigation drawer)

public class MapNavActivity extends AppCompatActivity 

Я знаю, что он должен работать, если я изменю AppCompatActivity к Activity

Однако это не работает для меня. Вот активность, определенная на файле манифеста

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

и вот тема в styles.xml файле

<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> 

я застрял с этой проблемой почти 5 часов. Кто-нибудь знает, как это решить?

EDIT файл манифеста

<?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> 

Я также добавить полную 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)  
+0

Просьба выслать ваш основной файл. –

+0

Добавьте ваш androidmanifest – basic

+0

Вам нужен AppCompat! добавьте его в свою сборку gradle com.android.support:support-v4:24.0.0 – Amir

ответ

4

Я просто попробовал ваш код в свежем проекте, и он работает отлично на моей машине. Убедитесь, что compile 'com.android.support:appcompat-v7:23.4.0' находится в вашем файле build.gradle, затем выполните перестройку и посмотрите, поможет ли это. Также проверьте свой менеджер SDK, чтобы узнать, есть ли у вас какие-либо старые обновления, которые вы еще не установили.

0

Хорошо перейдите на простой способ.

Сначала добавьте зависимость от вашего build.gradle.

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.1.1' 
compile 'com.android.support:design:23.1.1' 

}

затем открыть файл XML и добавить Плавающие кнопки действий.

<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" 
    android:src="@android:drawable/ic_dialog_email" /> 

затем откройте файл .java и инициализировать Плавучая Button

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // Click action 
      // write you code here. 
     } 
    }); 

затем очистите свой проект и запустить его.

Надеюсь, это решение поможет вам.

Смежные вопросы