Intereting Posts
Невозможно редактировать файлы в Android Studio Почему Butterknife @Bind не работает в выпуске (после proguard) Предотвращение автосохранения фотографий в галерее при загрузке фотографий в Android-браузере с использованием типа ввода = захват файла = камера geocoder.getFromLocation (); Время ожидания ответа с сервера Как использовать TabHost.OnTabChangeListener в android? Android – включить собственные функции StageFright в мой собственный проект Какую версию Android я должен разработать? Как ускорить работу Android Studio на Mac Следует ли заменить панель действий ToolBar? Proguard возвращается с кодом ошибки 1. После обновления с ADT 16 до 18 Лучшая практика для клиента android для связи с сервером с помощью потоков Элегантный способ чтения файла в массив byte в Java Что произойдет, если return false в OnCreate ContentProvider? Как установить изображение из динамически динамически в андроид? Поддерживает ли веб-представление на Android поддержку SSL?

PopBackStack () после saveInstanceState ()

Я сталкиваюсь с проблемой, когда у меня есть Activity с несколькими фрагментами. Для любого отдельного фрагмента вы можете выполнить операцию поиска, которая отлично работает … если вы выполняете поиск по любому из фрагментов, она отобразит новое действие для обработки поиска, а затем вернет результат в Activity, чтобы обрабатывать отображение Новый фрагмент. Проблема заключается в том, что после операции поиска я хочу, чтобы очистить (почти) все фрагменты, используя popBackStackImmediate(...) и поскольку имя saveInstanceState(...) было saveInstanceState(...) , я получаю исключение, которое гласит:

 "java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState" 

Любая идея, как выскочить из заднего стека после onSaveInstanceState была вызвана?

Solutions Collecting From Web of "PopBackStack () после saveInstanceState ()"

По-видимому, моя проблема возникла из вызова, сделанного в onActivityResult (…)

Я смог исправить проблему, поместив код модификации пользовательского интерфейса в Runnable, а затем отправив Runnable в основной поток:

 Runnable r = new Runnable() { @Override public void run() { // UI code here } }; Handler h = new Handler(); h.post(r); 

super.onActivityResult сначала перед вашей логикой, и проблема будет исправлена, поскольку onActivityResult mFragments.noteStateNotSaved(); FragmentActivity вызывает mFragments.noteStateNotSaved();

Этот ответ может помочь кому-то. Когда ваша активность не видна, вы не можете вызвать popBackStackImmediate (…), это вызовет незаконное исключение: не может выполнить это действие после onsaveinstancestate.

Вместо этого вы можете проверить, видна ли активность или нет? Перед вызовом popBackStackImmediate ().

Если ваша активность не видна, не вызывайте popBackStackImmediate. С помощью булевского флага вы можете достичь, когда активность снова откроется .

Как насчет того, чтобы вытащить стек непосредственно перед началом вашей связанной деятельности? OnSaveInstanceState не будет вызываться до тех пор, пока не будет вызвана функция startActivity (а новая активность появилась перед текущей one0 … непосредственно перед этим, верните стек фрагмента в нужное состояние и затем вызовите startActivity.

Поскольку стек фрагментов является слоем над обычным стеком задачи / назад, я думаю, что его изменение «с середины» вызовет проблемы, и именно поэтому вы видите проблему.