Obtenga la fecha de datepicker usando dialogfragment
Estoy usando el ejemplo de Google para insertar un selector de fechas dentro de mi aplicación usando un fragmento de diálogo
http://developer.android.com/guide/topics/ui/controls/pickers.html
Pero no estoy seguro de cómo obtener la fecha después de configurarlo (no es experto en Java). El diálogo y el selector de fecha se ejecutan bien y puedo registrar que la fecha está correctamente establecida, pero, ¿cómo puedo hacer para que se realice una devolución de llamada en la actividad de los padres?
Este es mi fragmento de diálogo
public class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@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);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
**Log.w("DatePicker","Date = " + year);**
}
}
... y llamo al diálogo desde mi actividad con ...
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
¿Cuál es la forma correcta de llamar a un método en mi actividad principal en lugar de Log.w? Supongo que es algo relacionado con pasar una devolución de llamada como parámetro o algo, pero la mayoría de las referencias que encontré en Internet son sobre versiones anteriores sin fragmentos de diálogo
EDITAR: no estoy seguro de si es importante pero la actividad de los padres se declara como:
public class EditSessionActivity extends FragmentActivity {
SOLUCIÓN: gracias al usuario de Lecho esta es la forma de hacerlo.
DatePickerFragmennt.class
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);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), (EditSessionActivity)getActivity(), year, month, day);
}
}
... y la actividad de los padres EditSessionActivity.class ...
public class EditSessionActivity extends FragmentActivity implements OnDateSetListener {
...
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
//do some stuff for example write on log and update TextField on activity
Log.w("DatePicker","Date = " + year);
((EditText) findViewById(R.id.tf_date)).setText("Date = " + year);
}