@@ -186,31 +186,38 @@ private void setUpSheetGravityButtonToggleGroup(@NonNull View view) {
186186 });
187187 }
188188
189- private void setupBackHandling (SideSheetBehavior <View > sideSheetBehavior ) {
189+ private void setupBackHandling (View sideSheet , SideSheetBehavior <View > sideSheetBehavior ) {
190190 OnBackPressedCallback nonModalOnBackPressedCallback =
191191 createNonModalOnBackPressedCallback (sideSheetBehavior );
192192 requireActivity ().getOnBackPressedDispatcher ().addCallback (this , nonModalOnBackPressedCallback );
193193 sideSheetBehavior .addCallback (
194194 new SideSheetCallback () {
195195 @ Override
196196 public void onStateChanged (@ NonNull View sheet , int newState ) {
197- switch (newState ) {
198- case SideSheetBehavior .STATE_EXPANDED :
199- case SideSheetBehavior .STATE_SETTLING :
200- nonModalOnBackPressedCallback .setEnabled (true );
201- break ;
202- case SideSheetBehavior .STATE_HIDDEN :
203- nonModalOnBackPressedCallback .setEnabled (false );
204- break ;
205- case SideSheetBehavior .STATE_DRAGGING :
206- default :
207- break ;
208- }
197+ updateBackHandlingEnabled (nonModalOnBackPressedCallback , newState );
209198 }
210199
211200 @ Override
212201 public void onSlide (@ NonNull View sheet , float slideOffset ) {}
213202 });
203+ sideSheet .post (
204+ () ->
205+ updateBackHandlingEnabled (nonModalOnBackPressedCallback , sideSheetBehavior .getState ()));
206+ }
207+
208+ private void updateBackHandlingEnabled (OnBackPressedCallback onBackPressedCallback , int state ) {
209+ switch (state ) {
210+ case SideSheetBehavior .STATE_EXPANDED :
211+ case SideSheetBehavior .STATE_SETTLING :
212+ onBackPressedCallback .setEnabled (true );
213+ break ;
214+ case SideSheetBehavior .STATE_HIDDEN :
215+ onBackPressedCallback .setEnabled (false );
216+ break ;
217+ case SideSheetBehavior .STATE_DRAGGING :
218+ default :
219+ break ;
220+ }
214221 }
215222
216223 private View setUpSideSheet (
@@ -227,7 +234,7 @@ private View setUpSideSheet(
227234 View standardSideSheetCloseIconButton = sideSheet .findViewById (closeIconButtonId );
228235 standardSideSheetCloseIconButton .setOnClickListener (v -> hideSideSheet (sideSheetBehavior ));
229236
230- setupBackHandling (sideSheetBehavior );
237+ setupBackHandling (sideSheet , sideSheetBehavior );
231238
232239 sideSheetViews .add (sideSheet );
233240
@@ -237,9 +244,10 @@ private View setUpSideSheet(
237244 private void setSideSheetCallback (
238245 View sideSheet , @ IdRes int stateTextViewId , @ IdRes int slideOffsetTextId ) {
239246 SideSheetBehavior <View > sideSheetBehavior = SideSheetBehavior .from (sideSheet );
247+ TextView stateTextView = sideSheet .findViewById (stateTextViewId );
240248 sideSheetBehavior .addCallback (
241- createSideSheetCallback (
242- sideSheet .findViewById ( stateTextViewId ), sideSheet . findViewById ( slideOffsetTextId )));
249+ createSideSheetCallback (stateTextView , sideSheet . findViewById ( slideOffsetTextId )));
250+ sideSheet .post (() -> updateStateTextView ( stateTextView , sideSheetBehavior . getState ( )));
243251 }
244252
245253 private void setUpDetachedModalSheet () {
@@ -373,22 +381,7 @@ private SideSheetCallback createSideSheetCallback(
373381 return new SideSheetCallback () {
374382 @ Override
375383 public void onStateChanged (@ NonNull View sheet , int newState ) {
376- stateTextView .setVisibility (View .VISIBLE );
377-
378- switch (newState ) {
379- case SideSheetBehavior .STATE_DRAGGING :
380- stateTextView .setText (R .string .cat_sidesheet_state_dragging );
381- break ;
382- case SideSheetBehavior .STATE_EXPANDED :
383- stateTextView .setText (R .string .cat_sidesheet_state_expanded );
384- break ;
385- case SideSheetBehavior .STATE_SETTLING :
386- stateTextView .setText (R .string .cat_sidesheet_state_settling );
387- break ;
388- case SideSheetBehavior .STATE_HIDDEN :
389- default :
390- break ;
391- }
384+ updateStateTextView (stateTextView , newState );
392385 }
393386
394387 @ Override
@@ -400,6 +393,25 @@ public void onSlide(@NonNull View sheet, float slideOffset) {
400393 };
401394 }
402395
396+ private void updateStateTextView (@ NonNull TextView stateTextView , int state ) {
397+ stateTextView .setVisibility (View .VISIBLE );
398+
399+ switch (state ) {
400+ case SideSheetBehavior .STATE_DRAGGING :
401+ stateTextView .setText (R .string .cat_sidesheet_state_dragging );
402+ break ;
403+ case SideSheetBehavior .STATE_EXPANDED :
404+ stateTextView .setText (R .string .cat_sidesheet_state_expanded );
405+ break ;
406+ case SideSheetBehavior .STATE_SETTLING :
407+ stateTextView .setText (R .string .cat_sidesheet_state_settling );
408+ break ;
409+ case SideSheetBehavior .STATE_HIDDEN :
410+ default :
411+ break ;
412+ }
413+ }
414+
403415 private OnBackPressedCallback createNonModalOnBackPressedCallback (
404416 SideSheetBehavior <View > behavior ) {
405417 return new OnBackPressedCallback (/* enabled= */ false ) {
0 commit comments