0

Я переношу действия на фрагменты, и у меня возникают проблемы с диалогом выбора даты, который отлично работал на старой активности. Я использовал этот пример: Implementing DatePicker in Fragment, но у меня возникли проблемы с отправкой выбранной даты обратно к фрагменту, в котором он нужен. Фрагмент «date picker» вложен внутри фрагмента «общая информация». Моя цель здесь - отправить выбранную дату из DatePickerFragment в GeneralInfoFragment.android - проблемы с datepicker внутри фрагмента

Вот код, который я до сих пор:

Listener для кнопки "выбрать дату"

public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.myDatePickerButton: 

      DialogFragment datepicker = new DatePickerFragment(); 
      datepicker.show(getFragmentManager(), "datePicker"); 

      break; 
} 

DatePickerFragment.java

public class DatePickerFragment extends DialogFragment 
    implements DatePickerDialog.OnDateSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 

     return new DatePickerDialog(getActivity(), this, year, month, day); 
    } 

    @Override 
    public void onDateSet(DatePicker view, int year, int month, int day) { 
     Calendar c = Calendar.getInstance(); 
     c.set(month, day, year); 

     SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy"); 
     String formattedDate = sdf.format(c.getTime()); 
     String outputDOI = formattedDate.toString(); // variable I want to send to GeneralInfoFragment 

    } 

} 
+0

Вы получаете ошибку? Может быть вы не можете войти ваша ошибка? –

+0

@Sash_KP Нет ошибок, он просто не обновляется на моем фрагменте «общая информация». Диалоговое окно открывается и закрывается нормально. – JHinne

ответ

0

Попробуйте это, вызовите фрагмент, как показано ниже:

  DialogFragment timepicker = DialogFragment.newInstance(1); 
      timepicker.setTargetFragment(GeneralInfoFragment.this, 1); 
      timepicker.show(getFragmentManager(), "datePicker"); 

Вы выбрали в Timepickerfragment значение будет предоставляться onActivityResult, добавьте это в GeneralInfoFragment

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == Activity.RESULT_OK) { 
     switch (requestCode) { 
      case 1: 
       //do what calculations you want to perform on the received date from timepicker 
       break; 
     } 
    } 
}