Почему BottomSheetBehavior генерирует java.lang.IllegalArgumentException: недопустимый аргумент состояния: 2, когда я пытаюсь установить состояние в STATE_SETTLING - PullRequest
0 голосов
/ 20 июня 2019

У меня есть метод, который выполняет действие против щелчка карты, когда я нажимаю на карту, метод пытается установить состояние на 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.designjehabSe: 650) в . . . . . . *. MerchantsZoneLocationHandler.onMapClickListener (MerchantsZoneLocationHandler.kt: 171) в . . . . . . *. ZonesFragment $ setupMerchantsComponents $ 2.onMapClick (ZonesFragment.kt: 119) в com.mapbox.mapboxsdk.maps.MapGestureDetector.notifyOnMapClickListeners (MapGestureDete)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.jop (: 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)

1 Ответ

0 голосов
/ 20 июня 2019

Проблема решена, мне нужно немного изменить свой код, пока я пытался установить состояние на STATE_SETTLING он выдает IllegalArgumentException, я просто изменил свой код на zonesViewModel.merchantInfoBottomLayout!!.state = BottomSheetBehavior.STATE_COLLAPSED вместо zonesViewModel.merchantInfoBottomLayout!!.state = BottomSheetBehavior.STATE_SETTLING

...