Ошибка раздувания класса поддержки Android
То, что я пытаюсь сделать, это использовать новую библиотеку дизайна поддержки 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" и "Библиотека поддержки Android" обновлены в версиях 15 и 22.2 соответственно.
Есть ли какие-либо предложения о том, что еще я могу попробовать?
Я нашел этот ответ: qaru.site/info/69358/... и попробовал решение, однако оно не решило мою проблему.
Ответы
Ответ 1
Если вы используете какие-либо компоненты библиотеки Design Library, вы должны убедиться, что ваша деятельность расширяет AppCompatActivity и использует соответствующую тему Theme.AppCompat
, Обратите внимание, что FloatingActionButton
полагается на набор colorAccent
на вашей теме - убедитесь, что ваша тема определена.
Ответ 2
Эта ошибка может быть вызвана по причинам, указанным ниже.
- Эта проблема, скорее всего, возникнет, если версия библиотеки приложений и библиотеки поддержки дизайна не соответствует.
Пример условия соответствия
compile 'com.android.support:appcompat-v7:24.2.0' // appcompat library
compile 'com.android.support:design:24.2.0' //design support library
-
В файле темы в стилях не должно быть
<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(модуль: приложение)
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')
}
Xml для FloatingActionButton
<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
У меня была такая же проблема. Я решил построить чистку и перестроить проект. Когда я снова запустил его, у него не было таких исключений.