当我尝试将状态设置为 STATE_SETTLING 时,为什么 BottomSheetBehavior 会抛出 java.lang.IllegalArgumentException: Illegal state argument: 2

问题描述 投票:0回答:1

我有一个对地图点击采取行动的方法,当我点击地图时,方法试图将状态设置为

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.startSetdlingAnimation(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)

android bottom-sheet
1个回答
2
投票

问题解决了,我需要稍微更改一下代码,当我尝试将状态设置为

STATE_SETTLING
时,它抛出了
IllegalArgumentException
,我刚刚将代码更改为:

zonesViewModel.merchantInfoBottomLayout!!.state = BottomSheetBehavior.STATE_COLLAPSED

而不是

zonesViewModel.merchantInfoBottomLayout!!.state = BottomSheetBehavior.STATE_SETTLING`
© www.soinside.com 2019 - 2024. All rights reserved.