2

응용 프로그램을 빌드 할 때 FloatingActionButton에 android.view.InflateException이 표시됩니까? 정말 오류의 원인을 모르겠습니다.Android에서 클래스 android.support.design.widget.FloatingActionButton을 inflating하는 중 오류가 발생했습니다.

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

전체 오류 추적 귀하의 경우에는

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)  
+0

@TimCastelijns 수 어느 것을 놓쳤습니까? –

+0

팹 버튼이있는 xml 코드를 추가하십시오. –

+0

FloatingActionButton을 사용하여 레이아웃 파일을 게시 할 수 있습니까? – Raghavendra

답변

8

이 문제가 styles.xml에, 당신의 기본 테마 이름은 AppBaseTheme입니다. Mainfest 파일에서 AppTheme을 사용했음을 알 수 있듯이이를 AppTheme로 변경하십시오.

클래스 android.support.design.widget.FloatingActionButton을 유발할 수있는 모든 이유를 나열했습니다. 요령을주의 깊게 읽으십시오.

  1. FAB 버튼은 디자인 라이브러리 Cpmponent입니다. 귀하의 활동은 대신 AppCompatActivity으로 연장되어야합니다.

  2. 귀하의 활동 테마도 적절해야합니다 테마 .AppCompat 테마. 또한 FAB에는 colorAccent가 필요합니다. 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. 사용 응용 프로그램 : backgroundTint = "@ 색상/your_color" 대신 안드로이드의 : backgroundTint.

  4. dependencies { 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:design:23.1.1' 
    ... 
    } 
    
  5. 엑스트라의 SDK 관리자에 대한 업데이트 지원 라이브러리> 안드로이드 지원 저장소와 안드로이드 지원 라이브러리

프로젝트 build.gradle 파일 내부 설계 라이브러리를 추가하는 방법에 대한 놓치지 마세요

희망에 따라 오류가 해결되기를 바랍니다.

+0

코드를 가져 주셔서 감사합니다.하지만 이미이 종류의 스타일을 사용하고 있습니다. –

+0

내 전체 프로젝트에서이 문제가 발생했습니다. FAB 오류가 발생했습니다. 이제 로그인 화면 디자인에서 FAB에 댓글을 달았습니다. 이제 다른 화면에 오류가 표시됩니다. 이런 예외 상황에 직면 했습니까? –

+0

아니 Vishal 난 그냥 내 옛 코드를 롤아웃하고 지금 다시. 그것의 큰 두통 지금. –

1

당신이 다음 그냥 FloatingActionButton에서이 라인 (대신 androidapp) 사용하는 API 21+에 backgroundTint를 사용하는 경우 : 여기

app:backgroundTint="@color/colorAccent" 

샘플 레이아웃

입니다
<?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>