Ich habe ein DialogFragment, das einen DatePickerDialog erstellt. Ich verwende eine statische Methode newInstance
, um die Anfangswerte festzulegen, um den leeren Standardkonstruktor zu verwenden. Wie soll ich den Hörer einstellen? Nach der Bildschirmdrehung, wenn Sie auf die Schaltfläche "Fertig" klicken, macht der Listener nichts, da er nicht existiert.DialogFragment - Beibehalten des Listeners nach der Bildschirmrotation
public class DatePickerFragment extends DialogFragment {
public static final String ARG_YEAR = "year";
public static final String ARG_MONTH = "month";
public static final String ARG_DAY = "day";
private OnDateSetListener listener_;
public static DatePickerFragment newInstance(OnDateSetListener listener, int year, int month, int day) {
final DatePickerFragment date_picker = new DatePickerFragment();
date_picker.setListener(listener);
final Bundle arguments = new Bundle();
arguments.putInt(ARG_YEAR, year);
arguments.putInt(ARG_MONTH, month);
arguments.putInt(ARG_DAY, day);
date_picker.setArguments(arguments);
return date_picker;
}
private void setListener(OnDateSetListener listener) {
listener_ = listener;
}
@Override
public Dialog onCreateDialog(Bundle saved_instance_state) {
final Bundle arguments = getArguments();
final int year = arguments.getInt(ARG_YEAR);
final int month = arguments.getInt(ARG_MONTH);
final int day = arguments.getInt(ARG_DAY);
return new DatePickerDialog(getActivity(), listener_, year, month, day);
}
}
Große Lösung dokumentiert! Es funktionierte einwandfrei. Danke, @Luksprog. –
Die richtige Lösung :) –
+1, auch für die Klärung, ist die wichtige Sache, das Tag des Dialogfragments zu verwenden, um den Zuhörer wieder anzubringen. Dieses Tag wird im zweiten Argument der 'show' Methode des Dialogfragments angegeben. – rekaszeru