【问题标题】:Error inflating class Android support design错误膨胀类 Android 支持设计
【发布时间】:2015-08-21 17:38:36
【问题描述】:

我想做的是使用这里提到的新的 android 支持设计库:http://android-developers.blogspot.com/2015/05/android-design-support-library.html

我尝试在我的 xml 布局中使用浮动操作按钮,如下所示(这是以下错误的来源):

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/adview"
    android:layout_marginTop="500dp" />

当我的应用程序启动时,这是错误:

06-06 20:56:43.186    6405-6405/com.nick.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.nick.app, PID: 6405
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nick.app/com.nick.app.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.design.widget.FloatingActionButton
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2366)
        at android.app.ActivityThread.access$800(ActivityThread.java:149)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5290)
        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:908)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
 Caused by: android.view.InflateException: Binary XML file line #7: 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.inflate(LayoutInflater.java:504)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:401)
        at android.app.Activity.setContentView(Activity.java:2197)
        at com.nick.app.MainActivity.onCreate(MainActivity.java:94)
        at android.app.Activity.performCreate(Activity.java:6020)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2259)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2366)
            at android.app.ActivityThread.access$800(ActivityThread.java:149)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5290)
            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:908)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)

在我的应用程序模块的build.gradle 文件中,我根据需要有compile 'com.android.support:design:22.2.0'。此外,build.gradle 文件中的其他相关部分:

compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
    ...
    minSdkVersion 16
    targetSdkVersion 21
    .....

我还应该注意,当我转到项目结构->依赖项并尝试添加库依赖项时,我在搜索时找不到“com.android.support:design:22.2.0”(我不确定这是否除了在 build.gradle 文件中添加依赖外,还需要)。

最后,在我的 SDK 管理器中,我已确认“Android Support Repository”和“Android Support Library”分别在版本 15 和 22.2 上是最新的。

还有什么我可以尝试的建议吗?

我找到了这个答案:https://stackoverflow.com/a/30557995/1489990 并尝试了解决方案,但它并没有解决我的问题。

【问题讨论】:

标签: android android-studio android-support-library


【解决方案1】:

如果您使用任何设计库组件,则应确保您的活动扩展 AppCompatActivity 并使用适当的 Theme.AppCompat 主题。请注意,FloatingActionButton 依赖于您的主题上设置的 colorAccent - 确保您的主题已定义。

【讨论】:

  • 我的主题定义了colorAccent,它使用了一个“合适的”Theme.AppCompat 主题(不管这意味着什么;我正在尝试Theme.AppCompatTheme.AppCompat.Light),我的活动扩展了@987654329 @。我得到的只是:“您需要在此活动中使用 Theme.AppCompat 主题(或后代)。” [悲伤的脸]
  • 如果之前编译过然后突然开始报这个错误,尝试清理你的项目然后重新构建
【解决方案2】:

此错误可能是由于以下原因引起的。

  1. 当您的 appcompat 库和设计支持库的版本不匹配时,可能会出现此问题。

匹配条件示例

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

  compile 'com.android.support:design:24.2.0' //design support library
  1. 你的主题文件样式不应该有

    <item name="colorPrimary">#4A0958</item>
    <item name="colorPrimaryDark">#4A0958</item>
    

    它应该看起来像这样。

    <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    
     <item name="colorPrimary">#4A0958</item>
     <item name="colorPrimaryDark">#4A0958</item>
     <item name="colorAccent">#4A0958</item>
    
    </style>
    

【讨论】:

    【解决方案3】:

    如果其他一切都不起作用,请升级依赖项和版本的版本。在您的 build.gradle 文件中:

    compileSdkVersion 24
    
    compile 'com.android.support:appcompat-v7:24.2.0'
    compile 'com.android.support:design:24.2.0'
    compile 'com.android.support:recyclerview-v7:24.2.0'
    compile 'com.android.support:cardview-v7:24.2.0'
    

    【讨论】:

      【解决方案4】:

      我有同样的错误。经过更多搜索,我得到了解决方案。 只需更改 build.gradle(模块:app)

      apply plugin: 'com.android.application'
      
      android {
          compileSdkVersion 24 // previous 23
      
          buildToolsVersion "24.0.2"
      
          defaultConfig {
              applicationId "com.ventrux.thevideoapp"
              minSdkVersion 15
              targetSdkVersion 24  // previous 23
              versionCode 1
              versionName "1.0"
              multiDexEnabled true
      
          }
          buildTypes {
              release {
                  minifyEnabled false
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
              }
          }
      }
      
      dependencies {
          compile fileTree(dir: 'libs', include: ['*.jar'])
          testCompile 'junit:junit:4.12'
          compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
          compile 'com.android.support:appcompat-v7:24.2.1'       // previous 23.2.1
          compile 'com.android.support:design:24.2.1'          // previous 23.2.1
      
          compile files('libs/YouTubeAndroidPlayerApi.jar')
      }
      

      FloatingActionButton 的 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:src="@drawable/plus_iconaddvideo"
                  android:layout_marginRight="30dp"
                  android:layout_marginBottom="30dp"
                  android:layout_alignParentBottom="true"
                  android:layout_alignParentRight="true"
                  android:layout_alignParentEnd="true"
                  android:layout_marginEnd="30dp"
                  />
      

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题。我解决了它构建清理和重建项目。当我再次运行它时,它没有抛出这样的异常。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-08
          • 2021-04-09
          • 2016-11-12
          • 2016-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多