Я только начал использовать DialogFragment из библиотеки поддержки Android и до сих пор нахожу это крайне раздражающим. У меня есть несколько пользовательских AsyncTasks, которые вызываются из разных мест моего приложения. Есть два случая, когда я сталкиваюсь с проблемами с DialogFragments:
- При отладке и экран гаснет
- Когда я хочу открыть FragmentDialog из onActivityResult()
И то, и другое, по крайней мере, я думаю, довольно распространенные ситуации, и в обоих случаях я получаю
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
Вот как устроены мои AsyncTasks:
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();
...
}
}
}
Я знаю, что мог бы установить параметр, который предотвращает переход экрана в спящий режим во время отладки, и я мог бы установить флаг в onActivityResult(), а затем открыть диалоговое окно в onStart(), но это не совсем то, что я ищу. Есть ли лучшие решения??
Спасибо Саймон