Использование AppCompat 'layout_behavior' с '@ string / appbar_scrolling_view_behavior' вызывает исключение

У меня странная проблема, использующая AppCompat Lib 22.2 с новым введением: layout_behavior

Если я использую его со значением «@ string / appbar_scrolling_view_behavior», как описано здесь Поддержка Android Design Lib, приложение прекращается со следующим исключением:

Could not inflate Behavior subclass android.support.design.widget.Settings Caused by: java.lang.RuntimeException: Could not inflate Behavior subclass android.support.design.widget.Settings Caused by: java.lang.ClassNotFoundException: android.support.design.widget.Settings Caused by: java.lang.NoClassDefFoundError: android/support/design/widget/Settings Caused by: java.lang.ClassNotFoundException: android.support.design.widget.Settings 

Если я перехожу к:

 app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior" 

Все работает нормально.

Что мне не хватает?

Solutions Collecting From Web of "Использование AppCompat 'layout_behavior' с '@ string / appbar_scrolling_view_behavior' вызывает исключение"

Для тех, кто сталкивается с этим исключением и использует proguard – вам нужно добавить следующие правила proguard:

 -keep class android.support.design.widget.** { *; } -keep interface android.support.design.widget.** { *; } -dontwarn android.support.design.** 

Или если вы не хотите хранить все компоненты библиотеки дизайна, которые вы можете использовать:

 -keepattributes *Annotation* -keep public class * extends android.support.design.widget.CoordinatorLayout.Behavior { *; } -keep public class * extends android.support.design.widget.ViewOffsetBehavior { *; } 

Другая причина, по которой это происходит, заключается в том, что вы расширяете FloatingActionButton.Behavior и у вас нет конструктора (Context, AttributeSet). Это случилось со мной с библиотекой дизайна v. 23.0.1

Просто добавьте этот конструктор в свой подкласс:

 public FloatingActionButtonBehaviorSubclass(Context context, AttributeSet attrs) { super(); } 

Вы должны добавить дизайн lib для своего проекта.

 compile 'com.android.support:design:22.2.0' 

Проверьте образец https://github.com/chrisbanes/cheesesquare

Для разработчиков, которые используют эту ошибку только при использовании proguard, просто добавьте одну строку в файл правил proguard:

 -keep public class * extends android.support.design.widget.CoordinatorLayout$Behavior { *; }