title: Passing argument from a fragment to its container activity
body: <p>I have two <code>fragments</code> with <code>time</code> and <code>date picker</code>.
  I need to send data chosen by the user from the fragment and pass them to to <code>fragments activity</code>, in order to combine data and send it to another <code>activity</code>.
  I used this solution <a href="https://stackoverflow.com/a/35922593/6920624">Link</a> but data is <code>null</code>.</p>
  
  <p>This is <code>FragmentOne</code> - <code>FramentTwo</code> is the same</p>
  
  <pre><code>public FragmentOne(){}
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
     View view = inflater.inflate(R.layout.fragment_one_layout,container,false);
  
     //FROM SIDE
     timeButtonFrom = (Button)view.findViewById(R.id.time_button);
     dateButtonFrom = (Button)view.findViewById(R.id.date_button);
     tvDateFrom = (TextView)view.findViewById(R.id.time_textview);
     tvTimeFrom = (TextView)view.findViewById(R.id.date_textview);
  
  
      timeButtonFrom.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             Calendar now = Calendar.getInstance();
             // TimePickerDialog tpd = TimePickerDialog.newInstance(
             TimePickerDialog tpd = TimePickerDialog.newInstance(
                     FragmentOne.this,
                     now.get(Calendar.HOUR_OF_DAY),
                     now.get(Calendar.MINUTE),true);//24H Enable, If 12 set false
             tpd.setThemeDark(true);
             tpd.enableMinutes(true);
             tpd.setTitle("Choose Time");
             tpd.setTimeInterval(1,15);//setTimeInterval to 1H and 15Min
  
  
             tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
                 @Override
                 public void onCancel(DialogInterface dialogInterface) {
                     Log.d("TimePicker", "Dialog was cancelled");
                 }
             });
  
             tpd.show(getFragmentManager(), "ChooseTimeFrom");
         }
     });// end Button Listener FROM
  
     dateButtonFrom.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             Calendar now = Calendar.getInstance();
             DatePickerDialog dpd = DatePickerDialog.newInstance(
                     FragmentOne.this,
                     now.get(Calendar.YEAR),
                     now.get(Calendar.MONTH),
                     now.get(Calendar.DAY_OF_MONTH)
             );
             dpd.setThemeDark(true);
             dpd.showYearPickerFirst(true);
             dpd.setTitle("Choose Date");
             dpd.show(getFragmentManager(), "ChooseDateFrom");
         }
     });//END DATEBUTTONFROM
    return  view;
  
  }//END ONCREATEVIEW
  
  @Override
  public void onResume() {
      super.onResume();
      DatePickerDialog dpd = (DatePickerDialog) getFragmentManager().findFragmentByTag("ChooseDateFrom");
      if(dpd != null) dpd.setOnDateSetListener(this);
      TimePickerDialog tpd = (TimePickerDialog) getFragmentManager().findFragmentByTag("ChooseTimeFrom");
      if(tpd != null) tpd.setOnTimeSetListener(this);
  
  }
  
  
  
  @Override
  public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
  
      String date = "You picked the following date: "+year+"/"+(++monthOfYear)+"/"+dayOfMonth;
      tvDateFrom.setText(date);
  
  }
  
  @Override
  public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
  
      String hourString = hourOfDay &lt; 10 ? "0"+hourOfDay : ""+hourOfDay;
      String minuteString = minute &lt; 10 ? "0"+minute : ""+minute;
      String secondString = second &lt; 10 ? "0"+second : ""+second;
      String time = "You picked the following time: "+hourString+"h"+minuteString+"m"+secondString+"s";
      tvTimeFrom.setText(time);
  }
  </code></pre>
  
  <p>This is my Activity</p>
  
  <pre><code>public class DatePickerActivity extends AppCompatActivity {
  private static final String TAG = "DatePickerActivity";
  ViewPager viewPager;
  PickerAdapter adapter;
  String myString = "TEST";
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.date_fragment);
      String strObj = getIntent().getStringExtra("Location");
      GetParamsClass getParamsClass = new Gson().fromJson(strObj,GetParamsClass.class);
  
      adapter = new PickerAdapter(getFragmentManager());
      viewPager = (ViewPager) findViewById(R.id.pager);
      viewPager.setAdapter(adapter);
  
      setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
      TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
      tabLayout.setupWithViewPager(viewPager);
      for(int i=0;i&lt;adapter.getCount();i++) tabLayout.getTabAt(i).setText(adapter.getTitle(i));
  
  
  
  }
  
  public String getMyData() {
      return myString;
  }
  
  class PickerAdapter extends android.support.v13.app.FragmentPagerAdapter {
      private static final int NUM_PAGES = 2;
      Fragment fragmentOne;
      Fragment fragmentTwo;
  
      public PickerAdapter(FragmentManager fm) {
          super(fm);
          fragmentOne = new FragmentOne();
          fragmentTwo = new FragmentTwo();
      }
  
      @Override
      public int getCount() {
          return NUM_PAGES;
      }
  
      @Override
      public Fragment getItem(int position) {
          switch(position) {
              case 0:
                  return fragmentOne;
              case 1:
              default:
                  return fragmentTwo;
          }
      }
  
      public int getTitle(int position) {
          switch(position) {
              case 0:
                  return R.string.tab_title_time;
              case 1:
              default:
                  return R.string.tab_title_date;
          }
      }
  }
  }
  </code></pre>
  
  <p><strong>EDIT</strong></p>
  
  <pre><code>public class DatePickerActivity extends AppCompatActivity implements  FragmentOne.OnDateTimeSelectedListener {
  private static final String TAG = "DatePickerActivity";
  ViewPager viewPager;
  PickerAdapter adapter;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.date_fragment);
  
      adapter = new PickerAdapter(getFragmentManager(),this);
      viewPager = (ViewPager) findViewById(R.id.pager);
      viewPager.setAdapter(adapter);
  
      setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
      TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
      tabLayout.setupWithViewPager(viewPager);
      for(int i=0;i&lt;adapter.getCount();i++) tabLayout.getTabAt(i).setText(adapter.getTitle(i));
  }
  
  @Override
  public void onDateTimeSelected(String date) {
      Log.d(TAG, "onDateTimeSelected: "+ date);
  }
  
  class PickerAdapter extends android.support.v13.app.FragmentPagerAdapter {
      private static final int NUM_PAGES = 2;
      Fragment fragmentOne;
      Fragment fragmentTwo;
  
      public PickerAdapter(FragmentManager fm,DatePickerActivity activity) {
          super(fm);
          fragmentOne = new FragmentOne();
          fragmentTwo = new FragmentTwo();
          fragmentOne.setOnDateTimeSelectedListener(activity);//THIS LINE GIVES ERROR
  
      }
  
      @Override
      public int getCount() {
          return NUM_PAGES;
      }
  
      @Override
      public Fragment getItem(int position) {
          switch(position) {
              case 0:
                  return fragmentOne;
              case 1:
              default:
                  return fragmentTwo;
          }
      }
  
      public int getTitle(int position) {
          switch(position) {
              case 0:
                  return R.string.tab_title_time;
              case 1:
              default:
                  return R.string.tab_title_date;
          }
      }
  }
  </code></pre>
  
  <p>Fragment One </p>
  
  <pre><code>public class FragmentOne extends DialogFragment implements DatePickerDialog.OnDateSetListener,TimePickerDialog.OnTimeSetListener {
  
  Button timeButtonFrom ;
  Button dateButtonFrom;
  TextView tvDateFrom ;
  TextView tvTimeFrom ;
  
  
  public interface OnDateTimeSelectedListener{
      void onDateTimeSelected(String date);
  }
  
  
  
  private OnDateTimeSelectedListener onDateTimeSelectedListener;
  
  public void setOnDateTimeSelectedListener(OnDateTimeSelectedListener onDateTimeSelectedListener){
      this.onDateTimeSelectedListener = onDateTimeSelectedListener;
  }
  
  public OnDateTimeSelectedListener getOnDateTimeSelectedListener(){
      return onDateTimeSelectedListener;
  }
  
  
  
  
  public FragmentOne(){}
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
      View view = inflater.inflate(R.layout.fragment_one_layout,container,false);
  
      //FROM SIDE
      timeButtonFrom = (Button)view.findViewById(R.id.time_button);
      dateButtonFrom = (Button)view.findViewById(R.id.date_button);
      tvDateFrom = (TextView)view.findViewById(R.id.time_textview);
      tvTimeFrom = (TextView)view.findViewById(R.id.date_textview);
  
  
  
      timeButtonFrom.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              Calendar now = Calendar.getInstance();
              // TimePickerDialog tpd = TimePickerDialog.newInstance(
              TimePickerDialog tpd = TimePickerDialog.newInstance(
                      FragmentOne.this,
                      now.get(Calendar.HOUR_OF_DAY),
                      now.get(Calendar.MINUTE),true);//24H Enable, If 12 set false
              tpd.setThemeDark(true);
              tpd.enableMinutes(true);
              tpd.setTitle("Choose Time");
              tpd.setTimeInterval(1,15);//setTimeInterval to 1H and 15Min
  
  
              tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
                  @Override
                  public void onCancel(DialogInterface dialogInterface) {
                      Log.d("TimePicker", "Dialog was cancelled");
                  }
              });
  
              tpd.show(getFragmentManager(), "ChooseTimeFrom");
          }
      });// end Button Listener FROM
  
      dateButtonFrom.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              Calendar now = Calendar.getInstance();
              DatePickerDialog dpd = DatePickerDialog.newInstance(
                      FragmentOne.this,
                      now.get(Calendar.YEAR),
                      now.get(Calendar.MONTH),
                      now.get(Calendar.DAY_OF_MONTH)
              );
              dpd.setThemeDark(true);
              dpd.showYearPickerFirst(true);
              dpd.setTitle("Choose Date");
              dpd.show(getFragmentManager(), "ChooseDateFrom");
          }
      });//END DATEBUTTONFROM
  
  
  
  
      return  view;
  
  }//END ONCREATEVIEW
  
  @Override
  public void onResume() {
      super.onResume();
      DatePickerDialog dpd = (DatePickerDialog) getFragmentManager().findFragmentByTag("ChooseDateFrom");
      if(dpd != null) dpd.setOnDateSetListener(this);
      TimePickerDialog tpd = (TimePickerDialog) getFragmentManager().findFragmentByTag("ChooseTimeFrom");
      if(tpd != null) tpd.setOnTimeSetListener(this);
  
  }
  
  
  
  @Override
  public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
  
      String date = "You picked the following date: "+year+"/"+(++monthOfYear)+"/"+dayOfMonth;
      tvDateFrom.setText(date);
  
      if(tvTimeFrom != null &amp;&amp; tvTimeFrom.getText() != null &amp;&amp; !tvTimeFrom.getText().toString().equals("")){
  
          String dateTimeString = date + tvTimeFrom.getText().toString();
          onDateTimeSelectedListener.onDateTimeSelected(dateTimeString);
      }
  
  
  }
  
  @Override
  public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
  
      String hourString = hourOfDay &lt; 10 ? "0"+hourOfDay : ""+hourOfDay;
      String minuteString = minute &lt; 10 ? "0"+minute : ""+minute;
      String secondString = second &lt; 10 ? "0"+second : ""+second;
      String time = "You picked the following time: "+hourString+"h"+minuteString+"m"+secondString+"s";
      tvTimeFrom.setText(time);
  
      if(tvDateFrom != null &amp;&amp; tvDateFrom.getText() != null &amp;&amp; !tvDateFrom.getText().toString().equals("")){
  
          String dateTimeString = tvDateFrom.getText().toString() + time;
          onDateTimeSelectedListener.onDateTimeSelected(dateTimeString);
      }
  
  
  
  
  }
  }//END FRAGMENT CLASS
  </code></pre>