2016-03-28 6 views
2

Gibt es eine Möglichkeit, die Entlassung/das Abbrechen eines BottomSheetDialogFragment zu fangen?Fangen Sie die Entlassung von BottomSheetDialogFragment ab

Bodenblech Klasse

public class ContactDetailFragment extends BottomSheetDialogFragment 
{ 
    private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() 
    { 
     @Override 
     public void onStateChanged(@NonNull View bottomSheet, int newState) 
     { 
      if (newState == BottomSheetBehavior.STATE_HIDDEN) 
      { 
       dismiss(); 
      } 
     } 

     @Override 
     public void onSlide(@NonNull View bottomSheet, float slideOffset) 
     { 
     } 
    }; 

    @Override 
    public void setupDialog(Dialog dialog, int style) 
    { 
     super.setupDialog(dialog, style); 
     View contentView = View.inflate(getContext(), R.layout.fragment_contactdetail, null); 

     dialog.setContentView(contentView); 

     BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(((View) contentView.getParent())); 
     if (mBottomSheetBehavior != null) 
     { 
      mBottomSheetBehavior.setBottomSheetCallback(mBottomSheetBehaviorCallback); 
      mBottomSheetBehavior.setPeekHeight((int) DisplayUtils.dpToPixels(CONTACT_DETAIL_PEEK_HEIGHT, getResources().getDisplayMetrics())); 
     } 
    } 
} 

Was ich habe versucht, das funktioniert nicht

  • in setupDialog entweder von dialog.setOnCancelListener(); oder dialog.setOnDismissListener(); Zugabe wird nie
  • die bottomsheet ausgelöst Verhalten onStateChanged wird nur ausgelöst, wenn der Benutzer dr ags die bottomsheet hinunter den zusammengeklappten Zustand übergeben, und es gibt keinen Staat für entlassene/annulliert
  • zum Instanziierung des BottomSheetDialogFragment die gleichen OnCancel/ondismiss Zuhörer das Hinzufügen, unter Verwendung ContactDetailFragment.getDialog().setOnCancelListener() nicht

Gegeben ausgelöst werden, dass es ist im Wesentlichen ein Dialogfragment, es muss einen Weg geben, die Entlassung zu fangen?

+0

Override 'onDismiss' Methode hat für mich funktioniert. – hoshi

Antwort

4

Eine einfache Lösung gefunden. Mit onDestroy oder onDetach in der BottomSheetDialogFragment ermöglicht mir, die Kündigung richtig zu bekommen

+5

Überschreiben Sie 'onCancel()' oder 'onDismiss()' –

Verwandte Themen