Mit dialogfragment Datum aus Datumsauswahl abrufen
Ich verwende das Google-Beispiel, um mithilfe eines Dialogfragments einen Datepicker in meine App einzufügen
http://developer.android.com/guide/topics/ui/controls/pickers.html
Aber ich bin nicht sicher, wie ich das Datum nach dem Festlegen bekommen soll (kein Java-Experte). Dialog und Datumsauswahl werden in Ordnung ausgeführt und ich kann protokollieren, dass das Datum korrekt eingestellt ist. Wie kann ich jedoch vorgehen, um einen Rückruf für die übergeordnete Aktivität auszuführen?
Das ist mein Dialogfragment
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);**
}
}
... und ich rufe den Dialog von meiner Aktivität mit ...
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
Wie kann ich eine Methode in meiner übergeordneten Aktivität anstelle von Log.w korrekt aufrufen? Ich nehme an, das hat etwas mit der Übergabe eines Rückrufs als Parameter zu tun, aber die meisten Referenzen, die ich im Internet gefunden habe, beziehen sich auf frühere Versionen ohne Dialogfragmente
BEARBEITEN: nicht sicher, ob es wichtig ist, aber übergeordnete Aktivität wird wie folgt deklariert:
public class EditSessionActivity extends FragmentActivity {
LÖSUNG: Dank des Lecho-Benutzers ist dies der richtige Weg
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);
}
}
... und übergeordnete Aktivität 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);
}