【问题标题】:Error inflating class android.support.design.widget.FloatingActionButton膨胀类 android.support.design.widget.FloatingActionButton 时出错
【发布时间】:2017-07-02 11:16:51
【问题描述】:

我的应用崩溃了,因为

膨胀类 android.support.design.widget.FloatingActionButton 时出错

这是我在 XML 中的代码

<android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:src="@drawable/icon_right"
        app:backgroundTint="@color/green"
        android:onClick="previewphoto"
        app:layout_anchorGravity="bottom|right|end" />

这是我的毕业典礼

compile 'com.android.support:appcompat-v7:23.4.0' // appcompat library
compile 'com.android.support:design:23.4.0'

我的日志猫

致命异常:主进程:com.cyanlabsid.cetakphoto,PID:15298 java.lang.RuntimeException:无法启动活动 组件信息{com.cyanlabsid.cetakphoto/com.cyanlabsid.cetakphoto.PhotoPicker}: android.view.InflateException:二进制 XML 文件第 76 行:二进制 XML 文件第 76 行:膨胀类时出错 android.support.design.widget.FloatingActionButton 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483) 在 android.app.ActivityThread.access$900(ActivityThread.java:153) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5441) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 引起 作者:android.view.InflateException:二进制 XML 文件第 76 行:二进制 XML 文件第 76 行:膨胀类时出错 android.support.design.widget.FloatingActionButton 在 android.view.LayoutInflater.inflate(LayoutInflater.java:543) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:427) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 在 com.cyanlabsid.cetakphoto.PhotoPicker.onCreate(PhotoPicker.java:74) 在 android.app.Activity.performCreate(Activity.java:6303) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483) 在 android.app.ActivityThread.access$900(ActivityThread.java:153) android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 在 android.os.Handler.dispatchMessage(Handler.java:102) android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5441) 在 java.lang.reflect.Method.invoke(Native Method) 位于 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

谁能说我的错?

【问题讨论】:

  • 如果您使用的是 android studio,请尝试“使缓存无效并重新启动”(从文件菜单)。
  • 您在哪个操作系统版本上运行此程序,您的 @drawable/icon_right 是可绘制矢量吗?
  • xmlns:app="schemas.android.com/apk/res-auto" ?
  • 如果您将 Activity 扩展到您的 ActivityClass,请将其更改为 AppCompatActivity。

标签: android floating-action-button runtimeexception


【解决方案1】:

添加

build.gradle(:app)

 implementation 'com.google.android.material:material:1.2.0'

在你的 XML 中使用它

<com.google.android.material.floatingactionbutton.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:src="@drawable/icon_right"
        app:backgroundTint="@color/green"
        android:onClick="previewphoto"
        app:layout_anchorGravity="bottom|right|end" />

【讨论】:

    【解决方案2】:

    我为我的 ExtendedFloatingActionButton 使用 Material Design,当使用 API 24 时,它会导致应用程序崩溃。

    我尝试将我的 gradle 依赖项更新到最新版本:

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0-alpha02'
    

    但我也没有运气。我的解决方案是添加android:theme="",即使我设置了一个仍然会崩溃的样式,所以我将主题设置为与样式相同并且效果很好。

    <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
                        android:id="@+id/btn_one"
                        android:theme="@style/"
                        style="@style/"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:contentDescription="@string/text"
                        android:text="@string/text"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent" />
    

    【讨论】:

      【解决方案3】:
       <com.google.android.material.floatingactionbutton.FloatingActionButton
              android:id="@+id/fab"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="end|bottom"
              android:src="@drawable/ic_add_foreground"
              android:layout_margin="16dp" />
      

      使用这个

       <com.google.android.material.floatingactionbutton.FloatingActionButton>
      

      而不是

      <android.support.design.widget.FloatingActionButton>
      

      【讨论】:

        【解决方案4】:

        确保您在活动中声明 FloatingActionButton 的库与用于布局标记的库相同

        例如有

        import com.google.android.material.floatingactionbutton.FloatingActionButton; 在活动和 com.google.android.material.floatingactionbutton.FloatingActionButton 作为布局的标签

        【讨论】:

          【解决方案5】:

          我正在使用:

          类路径'com.android.tools.build:gradle:3.3.2'

          distributionUrl=https://services.gradle.org/distributions/gradle-4.10.1-all.zip

          我将我的 XML 更改为:

          <com.google.android.material.floatingactionbutton.FloatingActionButton
                  android:id="@+id/fab"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_margin="16dp"
                  android:clickable="true"
                  android:focusable="true"
                  app:srcCompat="@drawable/mapit"
                  app:layout_anchor="@id/foundit_imageView"
                  app:layout_anchorGravity="bottom|right|end" />
          

          一切都正确构建和运行。

          希望对你有帮助

          【讨论】:

            【解决方案6】:

            你需要添加

            android:theme="@style/Theme.AppCompat"

            在您使用 FloatingActionButton 的 XML_Layout 文件中...

            【讨论】:

            • ...+1 这是唯一对我有用的解决方案。
            【解决方案7】:

            使用这个代码会更好;

            <android.support.design.widget.FloatingActionButton
                    android:id="@+id/fab"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentBottom="true"
                    android:layout_margin="16dp"
                    app:backgroundTint="#f9fcfc"
            
                    android:src="@drawable/chat_float"
                    tools:targetApi="lollipop" />
            

            【讨论】:

              【解决方案8】:

              试过你的代码,问题出在 23.4.0 库上。

              升级到 24.+ ,那个库没有错误。

              例如:

              implementation 'com.android.support:appcompat-v7:24.2.1' // appcompat library
              implementation 'com.android.support:design:24.2.1'
              

              您也需要将编译版本更改为 24。

              compileSdkVersion 24
              

              【讨论】:

              • 使用版本 27,还是同样的问题
              • compile 已弃用,请使用 implementation
              • API 22 不行
              • 只需要使用 app:backgroundTint 而不是 android:backgroundTint 这将一直有效
              • @HarshilPansare 您可以将您的应用迁移到 androidx,然后您的问题将得到解决
              【解决方案9】:

              因为android:backgroundTint在android API 21以下不起作用,所以你需要改用app:backgroundTint

              【讨论】:

                【解决方案10】:

                使用

                app:backgroundTint
                

                代替

                android:backgroundTint
                

                希望它会起作用。

                【讨论】:

                  【解决方案11】:

                  API 级别 21 以下的应用版本不支持

                  app:backgroundTint="@color/green"
                  

                  或者你可以使用这个库来实现更多的材料设计小部件。

                  https://github.com/navasmdc/MaterialDesignLibrary

                  愉快的编码...

                  【讨论】:

                    【解决方案12】:

                    我遇到了同样的问题

                    我在使用 Pre-Lolipop 版本时遇到了同样的问题,为了解决它,我只是将“android:src”更改为“app:srcCompat”并且它适用于我。

                    为了与旧版本兼容,如果您使用矢量图形(作为可绘制资源),您应该使用:

                    app:srcCompat="@drawable/you_graphics"
                    

                    代替:

                    android:src="@drawable/your_graphics"
                    

                    【讨论】:

                    • 如果需要,我们还必须更改剩余的属性。 app:tint="@android:color/white" app:backgroundTint="#FF5722" app:layout_anchor="@id/appBar" app:layout_anchorGravity="bottom|end"
                    猜你喜欢
                    • 1970-01-01
                    • 2017-02-16
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-11-29
                    • 2017-02-28
                    • 2021-07-10
                    • 2020-08-01
                    • 2016-02-28
                    相关资源
                    最近更新 更多