Czy ktoś może sprawdzić, czy robię następujące poprawnie. Mam fragment, który ma progressdialog i potrzebuję go do pracy poprzez przełącznik orientacji. I obecnie to zrobić tak:ProgressDialog (fragment), który działa przez przełącznik orientacji
// 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);
}
}
W mojej działalności tworzę ten ProgressDialogFragment i wzywam show(), kiedy muszę okno do pokazania. Próbuję zrozumieć, dlaczego w metody onCreateDialog nie mogę po prostu zwrócić mProgressDialog, jeśli już istnieje (otrzymuję wyjątek mówiąc, że "requestFeature() musi być wywołana przed dodaniem treści"). Z pewnością jednym z zastosowań fragmentów jest ponowne wykorzystanie zasobów w tych przypadkach - dlaczego muszę utworzyć nowe okno dialogowe zamiast używać tego, które już istnieje?
Metoda onCreate nie jest wywoływana w przełączniku orientacji - fragment nie jest niszczony, a następnie odtwarzany. – Lieuwe
Przepraszam, chodzi mi o metodę onCreateDialog, która będzie ponownie wywoływana. –
Czy próbujesz zapisać postęp między zmianami orientacji? –