मैं BottomSheetDialogFragment
की अंतिम बर्खास्तगी कैसे सुन सकता हूं? ,BottomSheetDialogFragment - उपयोगकर्ता ईवेंट द्वारा खारिज करने के लिए सुनो
विधि 1
यह केवल आग अगर संवाद (यह नीचे स्वाइप करके खारिज किया जाता है नहीं: मैं केवल अंतिम बर्खास्तगी पर उपयोगकर्ता परिवर्तनों को सहेजना चाहते ...
मैं निम्नलिखित की कोशिश की वापस प्रेस या बाहर की दुनिया में स्पर्श)
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
Dialog d = super.onCreateDialog(savedInstanceState);
d.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
BottomSheetDialog d = (BottomSheetDialog) dialog;
FrameLayout bottomSheet = (FrameLayout) dialog.findViewById(android.support.design.R.id.design_bottom_sheet);
BottomSheetBehavior behaviour = BottomSheetBehavior.from(bottomSheet);
behaviour.setState(BottomSheetBehavior.STATE_EXPANDED);
behaviour.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_HIDDEN)
{
// Bottom Sheet was dismissed by user! But this is only fired, if dialog is swiped down! Not if touch outside dismissed the dialog or the back button
Toast.makeText(MainApp.get(), "HIDDEN", Toast.LENGTH_SHORT).show();
dismiss();
}
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
});
}
});
return d;
}
विधि 2
यह मैं एक अंतिम बर्खास्तगी और एक है कि एक स्क्रीन रोटेशन या गतिविधि मनोरंजन से आ रहा है के बीच अंतर करने की अनुमति नहीं है ...
@Override
public void onDismiss(DialogInterface dialog)
{
super.onDismiss(dialog);
// this works fine but fires one time too often for my use case, it fires on screen rotation as well, although this is a temporarily dismiss only
Toast.makeText(MainApp.get(), "DISMISSED", Toast.LENGTH_SHORT).show();
}
प्रश्न
मैं कैसे एक घटना है कि इंगित करता है को सुन सकते हैं , कि उपयोगकर्ता ने संवाद समाप्त कर दिया है?