为什么 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_HIDDEN
或 STATE_SETTLING
& isHideable
是 true
,但它正在抛出 java.lang.IllegalArgumentException: Illegal state argument: 2
。我尝试将状态设置为 STATE_EXPANDED
、STATE_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
我有一个针对地图点击采取行动的方法,当我点击地图时,方法试图将状态设置为 STATE_SETTLING
但它抛出 IllegalArgumentException
我已经检查了状态,如果它不在 STATE_HIDDEN
或 STATE_SETTLING
& isHideable
是 true
,但它正在抛出 java.lang.IllegalArgumentException: Illegal state argument: 2
。我尝试将状态设置为 STATE_EXPANDED
、STATE_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