web-dev-qa-db-fra.com

RuntimeException: impossible de gonfler la sous-classe de comportement

Je suis nouveau dans Android et j'ai des problèmes avec les comportements FloatingActionButton

Ma classe de comportement personnalisé:

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);
    }
}

Fragment 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>

RuntimeError lorsque le fragment gonfle le xml:

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)

etc

Qu'est-ce qui ne va pas?

11
Aleksey Leonov

Ajoutez les deux constructeurs suivants à votre FooterBehavior:

public FooterBehavior() {
}

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

Si vous utilisez AndroidX (projet open-source que l'équipe Android utilise pour développer, tester, empaqueter, versions et versions des bibliothèques dans Jetpack), vous devez mettre à jour XML.

Trouvez votre élément ici et remplacez:

Soutien:

Android.support.design.widget.FloatingActionButton

AndroidX:

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

Assurez-vous que vous utilisez le chemin d'accès correct de la classe de comportement personnalisé.

Par exemple:

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

3
Mahmoud Shahoud

Résolu. Changement app:layout_behavior=".ScrollingFABBehavior"/> à app:layout_behavior=".ui.ScrollingFABBehavior"/>

1
Aleksey Leonov