![](/img/trans.png)
[英]Disable 'app:layout_behavior=“@string/appbar_scrolling_view_behavior”' for child fragment
[英]Using AppCompat 'layout_behavior' with '@string/appbar_scrolling_view_behavior' throws exception
我有一個奇怪的問題,使用 AppCompat Lib 22.2 並引入了新的內容:layout_behavior
如果我將它與值 "@string/appbar_scrolling_view_behavior" 一起使用,如Android Design Support 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"
一切正常。
我錯過了什么?
對於遇到此異常並使用 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();
}
您應該為您的項目添加設計庫。
compile 'com.android.support:design:22.2.0'
對於僅在使用 proguard 時才使用此錯誤的開發人員,只需在 proguard 規則文件中添加一行:
-keep public class * extends android.support.design.widget.CoordinatorLayout$Behavior { *; }
將我的項目遷移到 Androidx 后,我今天遇到了這個錯誤。
我的 string.xml 文件中似乎有一個字符串。 我不得不刪除這條線。
<string name="appbar_scrolling_view_behavior" translatable="false">android.support.design.widget.AppBarLayout$ScrollingViewBehavior</string>
它應該只鏈接到 values.xml 文件而不是 string.xml 文件。
app:layout_behavior="@string/appbar_scrolling_view_behavior" 應該只鏈接到 values.xml (Ctrl+B)
<string name="appbar_scrolling_view_behavior" translatable="false">com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior</string>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.