web-dev-qa-db-ja.com

RuntimeException:Behaviorサブクラスをインフレートできませんでした

私はAndroidとFloatingActionButton behaivorsに問題があります

私のカスタム行動クラス:

public class ScrollingFABBehavior extends FloatingActionButton.Behavior {
    private static final String TAG = "ScrollingFABBehavior";

    public ScrollingFABBehavior(Context context, AttributeSet attrs,
            Handler mHandler) {
        super();
    }

    @Override
    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout,
            FloatingActionButton child, View directTargetChild, View target,
            int nestedScrollAxes) {
        return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL
                || super.onStartNestedScroll(coordinatorLayout, child,
                        directTargetChild, target, nestedScrollAxes);
    }

    @Override
    public void onNestedScroll(CoordinatorLayout coordinatorLayout,
            FloatingActionButton child, View target, int dxConsumed,
            int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
        super.onNestedScroll(coordinatorLayout, child, target, dxConsumed,
                dyConsumed, dxUnconsumed, dyUnconsumed);
        if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
            child.hide();
        } else if (dyConsumed < 0 && child.getVisibility() == View.GONE) {
            child.show();
        }
    }

    @Override
    public void onStopNestedScroll(CoordinatorLayout coordinatorLayout,
            FloatingActionButton
            child, View target) {
        super.onStopNestedScroll(coordinatorLayout, child, target);
    }
}

フラグメントXML:

...

<Android.support.design.widget.FloatingActionButton
        Android:id="@+id/share_fab"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="bottom|end"
        Android:layout_margin="@dimen/fab_margin"
        Android:contentDescription="@string/action_share"
        Android:elevation="@dimen/fab_elevation"
        Android:src="@drawable/ic_share"
        app:layout_behavior=".ScrollingFABBehavior"/>

</Android.support.design.widget.CoordinatorLayout>

XmlがinflateするときのRuntimeError:

07-14 08:52:43.904 30785-30785/com.example.xyzreader E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       Process: com.example.xyzreader, PID: 30785
                                                                       Android.view.InflateException: Binary XML file line #115: Could not inflate Behavior subclass com.example.xyzreader.ui.ScrollingFABBehavior
                                                                       Caused by: Java.lang.RuntimeException: Could not inflate Behavior subclass com.example.xyzreader.ui.ScrollingFABBehavior
                                                                           at Android.support.design.widget.CoordinatorLayout.parseBehavior(CoordinatorLayout.Java:615)
                                                                           at Android.support.design.widget.CoordinatorLayout$LayoutParams.<init>(CoordinatorLayout.Java:2652)

どうしましたか?

11
Aleksey Leonov

次の2つのコンストラクターをFooterBehaviorに追加します。

public FooterBehavior() {
}

public FooterBehavior(Context context, AttributeSet attrs) {
    super(context, attrs);
}
31
PangoSea

AndroidX(AndroidチームがJetpack内でライブラリを開発、テスト、パッケージ、バージョン、リリースするために使用するオープンソースプロジェクト)を使用している場合、XMLを更新する必要があります。

要素を見つけてください here を置き換えてください:

サポート:

Android.support.design.widget.FloatingActionButton

AndroidX:

com.google.Android.material.floatingactionbutton.FloatingActionButton
8

カスタム動作クラスの正しいパスを使用していることを確認してください。

例えば:

app:layout_behavior="net.company.myapp.view.behavior.TextViewBehavior"

3
Mahmoud Shahoud

解決しました。変化する app:layout_behavior=".ScrollingFABBehavior"/>からapp:layout_behavior=".ui.ScrollingFABBehavior"/>

1
Aleksey Leonov