/ / DialogFragment DatePickerDialog no devuelve la fecha modificada: android, datepicker, android-dialogfragment

DialogFragment DatePickerDialog no devuelve la fecha modificada: android, datepicker, android-dialogfragment

Tengo datepicker dialogframgent dentro de un fragmento y cuando registro las fechas en el onDateSet () método Solo obtengo la fecha original y no la fecha modificada del selector de fechas. He estado siguiendo el ejemplo de http://developer.android.com/guide/topics/ui/controls/pickers.html porque soy nuevo en Android. ¿Alguna idea de lo que estoy haciendo mal?

Fragmento de diálogo

public static class DobFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{

final Calendar calendar = Calendar.getInstance();
DatePicker picker;

protected DialogInterface.OnClickListener btn_ok_listener = new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
picker.clearFocus();
onDateSet(picker, picker.getYear(), picker.getMonth(), picker.getDayOfMonth());
}
};

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
View spinner = inflater.inflate(R.layout.date_spinner, null);

int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);

DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
picker = datePickerDialog.getDatePicker();

datePickerDialog.setCancelable(true);
datePickerDialog.setCanceledOnTouchOutside(true);
datePickerDialog.setView(spinner);
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Ok", btn_ok_listener);
datePickerDialog.onDateChanged(picker,picker.getYear(),picker.getMonth(),picker.getDayOfMonth());


datePickerDialog.setTitle("Birthday");

return datePickerDialog;
}

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

Log.v("dates",String.valueOf(picker.getYear()) +"-" + String.valueOf(year) +"-" + String.valueOf(calendar.getTime()));
//            Intent intent = new Intent();
//            intent.putExtra("result",formattedDate);
//            getTargetFragment().onActivityResult(getTargetRequestCode(), 1, intent);
}
}

Mostrar método de diálogo

public void showDobDialog() {
FragmentManager fragManager = myContext.getFragmentManager();
DialogFragment frag = new DobFragment();
frag.setTargetFragment(this,1);
frag.show(fragManager, "dob");
}

Spinner Date Layout

<?xml version="1.0" encoding="utf-8"?>
<DatePicker
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:datePickerMode="spinner"
android:calendarViewShown="false">
</DatePicker>

Iniciar sesión desde OnDateSet

2015-2015-Fri Aug 07 19:35:55 PDT 2015

Mi DatePicker Test Run - Fecha original Aug 07, 2015

enter image description here

Respuestas

0 para la respuesta № 1

prueba esto

@Override public Dialog onCreateDialog (@Nullable Bundle savedInstanceState) {

    final AtomicBoolean buttonPressed = new AtomicBoolean();
final DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), null, yearOfBirth, monthOfYear, dayOfMonth) {
@Override protected void onStop() {
super.onStop();
if (!buttonPressed.get()) {
callback.dialogDismissed(DobFragment.this, false);
}
}
};

datePickerDialog.setTitle(dialogTitle);
OnClickListener listener = new OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) {
buttonPressed.set(true);
boolean okSelected = which == BUTTON_POSITIVE;
callback.dialogDismissed(DobFragment.this, okSelected);
if (okSelected) {
DatePicker datePicker = datePickerDialog.getDatePicker();
//DatePicker does not take the value in the picker as final value entered by the user, instead it take the index of the current value
//The below line clear the focus on the date picker making it update all its indexes and delivering the right values when clicking Set
//button.
datePicker.clearFocus();
callback.onDateSet(datePicker, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
}
}
};
datePickerDialog.setButton(BUTTON_NEGATIVE, "Cancel", listener);
datePickerDialog.setButton(BUTTON_POSITIVE, "Set", listener);
return datePickerDialog;
}