为什么 BottomSheetBehavior 抛出 java.lang.IllegalArgumentException:非法状态参数:2 当我试图将状态设置为 STATE_SETTLING

Why BottomSheetBehavior throws java.lang.IllegalArgumentException: Illegal state argument: 2 when I'm trying to set state to STATE_SETTLING

我有一个针对地图点击采取行动的方法,当我点击地图时,方法试图将状态设置为 STATE_SETTLING 但它抛出 IllegalArgumentException

我已经检查了状态,如果它不在 STATE_HIDDENSTATE_SETTLING & isHideabletrue,但它正在抛出 java.lang.IllegalArgumentException: Illegal state argument: 2 。我尝试将状态设置为 STATE_EXPANDEDSTATE_HALF_EXPENDED,这些状态运行良好,但不是我想要的。

fun onMapClickListener(zonesViewModel: ZonesViewModel){
    if(zonesViewModel.merchantInfoBottomLayout!!.state != BottomSheetBehavior.STATE_HIDDEN || zonesViewModel.merchantInfoBottomLayout!!.state != BottomSheetBehavior.STATE_SETTLING){
        zonesViewModel.merchantInfoBottomLayout!!.isHideable = true
        zonesViewModel.merchantInfoBottomLayout!!.state = BottomSheetBehavior.STATE_SETTLING
    }

    }
}

崩溃日志:

E/AndroidRuntime:致命异常:main java.lang.IllegalArgumentException:非法状态参数:2 在 android.support.design.widget.BottomSheetBehavior.startSettlingAnimation(BottomSheetBehavior.java:755) 在 android.support.design.widget.BottomSheetBehavior.setState(BottomSheetBehavior.java:650) 在 ......*.MerchantsZoneLocationHandler.onMapClickListener(MerchantsZoneLocationHandler.kt :171) 在 ......*.ZonesFragment$setupMerchantsComponents$2.onMapClick(ZonesFragment.kt:119) 在 com.mapbox.mapboxsdk.maps.MapGestureDetector.notifyOnMapClickListeners(MapGestureDetector.java:882) 在 com.mapbox.mapboxsdk.maps.MapGestureDetector$StandardGestureListener.onSingleTapConfirmed(MapGestureDetector.java:327) 在 com.mapbox.android.gestures.StandardGestureDetector$1.onSingleTapConfirmed(StandardGestureDetector.java:81) 在 android.view.GestureDetector$GestureHandler.handleMessage(GestureDetector.java:300) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:165) 在 android.app.ActivityThread.main(ActivityThread.java:6375) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)

问题已解决,我需要稍微更改一下我的代码,当我尝试将状态设置为 STATE_SETTLING 时它正在抛出 IllegalArgumentException,我只是将我的代码更改为 zonesViewModel.merchantInfoBottomLayout!!.state = BottomSheetBehavior.STATE_COLLAPSED 代替 zonesViewModel.merchantInfoBottomLayout!!.state = BottomSheetBehavior.STATE_SETTLING