DialogFragment and onDismiss

前端 未结 8 1977
迷失自我
迷失自我 2020-11-27 16:14

I am using a DialogFragment, which I am showing like this from an Activity:

DialogFragmentImage dialog = DialogFragmentImage.newIns         


        
8条回答
  •  醉酒成梦
    2020-11-27 16:26

    Make your Activity implement OnDismissListener

    public final class YourActivity extends Activity implements DialogInterface.OnDismissListener {
    
        @Override
        public void onDismiss(final DialogInterface dialog) {
            //Fragment dialog had been dismissed
        }
    
    }
    

    DialogFragment already implements OnDismissListener, just override the method and call the Activity.

    public final class DialogFragmentImage extends DialogFragment {
    
        ///blah blah
    
        @Override
        public void onDismiss(final DialogInterface dialog) {
            super.onDismiss(dialog);
            final Activity activity = getActivity();
            if (activity instanceof DialogInterface.OnDismissListener) {
                ((DialogInterface.OnDismissListener) activity).onDismiss(dialog);
            }
        }
    
    }
    

    If you're starting the dialog from a fragment using the childFragment manager (API>=17), you can use getParentFragment to talk to the onDismissListener on the parent fragment.:

    public final class DialogFragmentImage extends DialogFragment {
    
        ///blah blah
    
        @Override
        public void onDismiss(final DialogInterface dialog) {
            super.onDismiss(dialog);
            Fragment parentFragment = getParentFragment();
            if (parentFragment instanceof DialogInterface.OnDismissListener) {
                ((DialogInterface.OnDismissListener) parentFragment).onDismiss(dialog);
            } 
        }
    
    }
    

提交回复
热议问题