Kann jemand schauen, wenn ich folgendes richtig mache. Ich habe ein Fragment, das einen Fortschrittdialog hat und ich brauche es über einen Orientierungsschalter zu arbeiten. Ich tue dies derzeit etwa so:ProgressDialog (Fragment), das über einen Orientierungsschalter funktioniert
// I am using the compat libraries
import android.support.v4.app.DialogFragment;
public class ProgressDialogFragment extends DialogFragment {
private ProgressDialog mProgressDialog = null;
private int mMax = 100;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, 0);
setRetainInstance(true);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setTitle("Title");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(true);
mProgressDialog.setProgress(0);
mProgressDialog.setMax(mMax);
mProgressDialog.setCanceledOnTouchOutside(false);
return mProgressDialog;
}
// there seems to be a bug in the compat library - if I don't do the following - the dialog is not show after an orientation switch
@Override
public void onDestroyView() {
if (getDialog() != null && getRetainInstance())
getDialog().setDismissMessage(null);
super.onDestroyView();
}
public void setMax(int arg1) {
mProgressDialog.setMax(arg1);
mMax = arg1;
}
public void setProgress(int arg1) {
mProgressDialog.setProgress(arg1);
}
}
In meiner Tätigkeit Ich schaffe diese ProgressDialogFragment und ich rufe show(), wenn ich den Dialog müssen zeigen. Ich versuche zu verstehen, warum in der onCreateDialog-Methode ich nicht einfach den mProgressDialog zurückgeben kann, wenn es bereits existiert (ich bekomme eine Ausnahme, die sagt "requestFeature() muss vor dem Hinzufügen von Inhalt aufgerufen werden"). Sicher ist eine der Verwendungen von Fragmenten die Wiederverwendung von Ressourcen in diesen Fällen - warum muss ich einen neuen Dialog erstellen, anstatt den bereits vorhandenen zu verwenden?
Die onCreate-Methode wird nicht auf einem Orientierungsschalter aufgerufen - das Fragment wird nicht zerstört und dann neu erstellt. – Lieuwe
Entschuldigung, ich meinte die onCreateDialog-Methode, die erneut aufgerufen wird. –
Versuchen Sie, den Fortschritt zwischen den Orientierungsänderungen zu speichern? –