Właśnie zacząłem używać DialogFragment z biblioteki pomocy Androida i uważam, że jest to wyjątkowo irytujące. Mam niestandardowe AsyncTasks, które są wywoływane z różnych miejsc w mojej aplikacji. Istnieją dwie sytuacje, kiedy napotkasz problemy z DialogFragments:Wyjątek IllegalStateException podczas korzystania z DialogFragment
- Podczas debugowania i ekran gaśnie
- Kiedy chcę otworzyć FragmentDialog z onActivityResult()
oba, przynajmniej Myślę, że są dość częste sytuacje, w obu przypadkach dostaję
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
ten sposób moi AsyncTasks mają strukturę:
private class UploadImageAsyncTask extends AsyncTask<Void, Void, Image> {
private ProgressDialogFragment dialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
FragmentManager fm = getSupportFragmentManager();
dialog = new ProgressDialogFragment();
dialog.show(fm, "ProgressDialogFragment");
}
@Override
protected Image doInBackground(Void... params) {
...
}
@Override
protected void onPostExecute(Image result) {
super.onPostExecute(result);
dialog.dismiss();
...
}
}
}
wiem, mogę ustawić ustawienie, które zapobiega ekran przed pójściem spać podczas debugowania i mogę ustawić flagę w onActivityResult(), a następnie otworzyć okno w onStart(), ale to nie jest naprawdę to, co ja Szukam. Czy są jakieś lepsze rozwiązania?
Dzięki Simon
Jest to jeden z najbardziej irytujących problemów, jakie napotykają w rozwoju Android. Nieaktualne interfejsy API dialogów nie miały tego problemu. Wszystkie obejścia są tak brzydkie. Nadal nie mogłem znaleźć czystego rozwiązania tego problemu. –
Ja też nie. Wciąż czekam na kogoś, kto pokazał mi czyste rozwiązanie: - \ – SimonSays