gpt4 book ai didi

android - BottomSheetBehavior 非法状态参数 : 5

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:04 29 4
gpt4 key购买 nike

有人可以解释一下这个异常是什么时候发生的吗?

12-18 11:20:07.225 15944-15944/com.test.dev.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.dev.debug, PID: 15944
java.lang.IllegalArgumentException: Illegal state argument: 5
at android.support.design.widget.BottomSheetBehavior.startSettlingAnimation(BottomSheetBehavior.java:631)
at android.support.design.widget.BottomSheetBehavior$1.run(BottomSheetBehavior.java:550)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

Java 类

public class BottomSheetController {

private BottomSheetBehavior<View> bottomSheetBehavior;
private WeakReference<FrameLayout> bottomSheetContainer;
private Slide slide;

public interface Slide {
void onSlide(@NonNull View bottomSheet, float slideOffset);
}

public void bind(FrameLayout bottomSheetContainer) {
this.bottomSheetContainer = new WeakReference<>(bottomSheetContainer);
bottomSheetBehavior = BottomSheetBehavior.from(this.bottomSheetContainer.get());
bottomSheetBehavior.setHideable(true);
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
bottomSheetBehavior.setBottomSheetCallback(sheetCallback());
}

public void unbind() {
this.bottomSheetContainer.clear();
}

public void setSlide(Slide slide) {
this.slide = slide;
}

public void collapse() {
bottomSheetBehavior.setHideable(true);
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}

public void expand() {
bottomSheetBehavior.setHideable(false);
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}

public void hide() {
bottomSheetBehavior.setHideable(true);
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
}

public int getState() {
return bottomSheetBehavior.getState();
}

private BottomSheetBehavior.BottomSheetCallback sheetCallback() {
return new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {

if (newState != BottomSheetBehavior.STATE_HIDDEN) {
bottomSheetBehavior.setHideable(false);
} else {
bottomSheetBehavior.setHideable(true);
}
}

@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {

if (slide != null) {
slide.onSlide(bottomSheet, slideOffset);
}
}
};
}
}

最佳答案

public class IllegalArgumentException extends RuntimeException

Thrown to indicate that a method has been passed an illegal or inappropriate argument.

在代码的某处,您将非法参数传递给方法 startSettlingAnimation()(BottomSheetBehavior 类)。此方法抛出异常:

void startSettlingAnimation(View child, int state) {
int top;
if (state == STATE_COLLAPSED) {
top = mCollapsedOffset;
} else if (state == STATE_HALF_EXPANDED) {
top = mHalfExpandedOffset;
} else if (state == STATE_EXPANDED) {
top = getExpandedOffset();
} else if (mHideable && state == STATE_HIDDEN) {
top = mParentHeight;
} else {
throw new IllegalArgumentException("Illegal state argument: " + state);
}
if (mViewDragHelper.smoothSlideViewTo(child, child.getLeft(), top)) {
setStateInternal(STATE_SETTLING);
ViewCompat.postOnAnimation(child, new SettleRunnable(child, state));
} else {
setStateInternal(state);
}
}

您的错误是:非法状态参数:5。 5 是 STATE_HIDDEN 的整数值。因此,虽然您的状态是 STATE_HIDDEN (5),但您的 mHideable bool 值是 false。因此,基本建议是设置 mHideable = true

没有任何代码,我能告诉你的就这么多。

关于android - BottomSheetBehavior 非法状态参数 : 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47871555/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com