10
내 레이아웃 중 하나에 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" /> 

을 추가 해요 때 디자인 지원 라이브러리

defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
     ... 
} 

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

을 사용하고

는이 오류를 얻을

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 

은 내가 그러나이 나를 위해 작동하지 않습니다 Activity

AppCompatActivity를 변경하는 경우가 작동합니다 알고있다. 다음은 매니페스트 파일에

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

을 정의 활동 그리고 여기

<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시간와 붙어있어 styles.xml 파일에있는 테마입니다. 아무도 이것을 해결하는 방법을 알고 있습니까?

편집 매니페스트 파일

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

은 또한 그냥 신선한 프로젝트에 코드를 시도

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

mainfiest 파일을 게시하십시오. –

+0

androidmanifest를 추가하십시오 – basic

+0

당신은 AppCompat가 필요합니다! 당신의 빌드에 그것을 추가하십시오 gradle com.android.support : support-v4:24.0.0 – Amir

답변

4

전체 예외를 추가하고 내 컴퓨터에서 잘 작동한다. build.gradle 파일에 compile 'com.android.support:appcompat-v7:23.4.0'이 있는지 확인한 다음 다시 작성하여 도움이되는지 확인하십시오. 또한 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 파일을 열고 부동 버튼을

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

를 초기화합니다.

이 솔루션이 도움이되기를 바랍니다.