Get data back from a fragment dialog - best practices?

前端 未结 4 1526
面向向阳花
面向向阳花 2020-12-13 11:03

I\'m converting some of my project to use fragments. How do we communicate with a fragment dialog? I want to create a fragment dialog just to get some text input from the us

4条回答
  •  情深已故
    2020-12-13 11:48

    As eternalmatt said the given solution does not really answer the question. The way to communicate the dialog with the fragment is calling:

    dialog.setTargetFragment(myCallingFragment, requestCode);
    

    The way I do this is by creating the FragmentDialog with an static method where the listener is instanciated an then do the setFragmentTarget() stuff:

    public mySuperFragmentDialog extends DialogFragment {
      public interface SuperListener{
         void onSomethingHappened();
      }
    
      public static mySuperFragmentDialog newInstance(SuperListener listener){
         MySuperFagmentDialog f = new MySuperFragmentDialog();
         f.setTargetFragment((Fragment) listener, /*requestCode*/ 1234);
         return f;
      }
    }
    

    To create the dialog from the fragment just do as usual:

    Dialog dialog = MySuperFragmentDialog.newInstance(parentFragment);
    dialog.show();
    

    Then when you want to comunicate with the fragment which calls the dialog just:

    Fragment parentFragment = getTargetFragment();
    ((SuperListener) parentFragment).onSomethingHappened();
    

    This solution works only when dialog is gonna be created from Fragments and not from Activities, but you can combine both methods ('setFragmentTarget()' and the 'onAttach()' one) plus some Class checks to provide a full solution.

提交回复
热议问题