2015-02-09 7 views
0

У меня проблемы с получением информации о параметре DatePickerFragment в моей работе с фрагментами. У меня есть этот код, извлеченный со страницы разработчиков Google:Вызов onDateSet на активность фрагмента

public class DatePickerFragment extends DialogFragment { 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Use the current date as the default date in the picker 
    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); 
    ADD add = new ADD(); 
    // Create a new instance of DatePickerDialog and return it 
    return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) add.getTargetFragment(), year, month, day); 
}} 

А вот мой MainActivity, когда я получаю дату, выбранную пользователем:

public class ADD extends Fragment implements AdapterView.OnItemSelectedListener, DatePickerDialog.OnDateSetListener { 
//code 
@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
    Log.w("DatePicker", "Date = " + year); 
    mDateDisplay.setText(
      new StringBuilder() 
        // Month is 0 based so add 1 
        .append(dayOfMonth).append("-") 
        .append(monthOfYear + 1).append("-") 
        .append(year).append(" ")); 
}} 

Я извинить, если этот вопрос был - спросил прежде. Я активно занимаюсь поиском на этой странице, и этот вопрос получил ответ только на «Деятельность», а не «Фрагменты». Кроме того, я должен отметить, что я не эксперт по Java. Моя интуиция подсказывает мне, что проблема может быть в «возврате» DatePickerFragment, но я неспособен решить проблему.

ответ

0

Вы, наверное, забыли, чтобы вызвать метод setTargetFragment внутри ADD фрагмента:

DatePickerFragment datePickerFragment = new DatePickerFragment(); 
datePickerFragment.setTargetFragment(this, 1234); 
datePickerFragment.show(getChildFragmentManager(), "DatePickerFragment TAG"); 

В дополнение заменить onCreateDialog метод с:

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); 
// Create a new instance of DatePickerDialog and return it 
return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) getTargetFragment(), year, month, day); 
+0

Это была проблема! Спасибо! – zakum

Смежные вопросы