Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
#1

Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity - Программирование Android

09.03.2016, 10:21. Просмотров 354. Ответов 14
Метки нет (Все метки)

Такая проблема:после вызова метода recreate() методы фрагментов onCreate() and onCreateView() вызываются, а он Resume() - нет! Но если заблокировать девайс и разблокировать, то он вызывается. Подскажите пожалуйста, с чем это может быть связано?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2016, 10:21     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity
Посмотрите здесь:
Android Android: как не перезагружать webview в activity при OnResume?
Android Какой метод фрагмента срабатывает после закрытия диалога?
Android Артефакт при осуществлении первой попытки обратного вызова для метода onAccessibilityStateChanged
Скрыть тулбар у 1 фрагмента Tabbed Activity + toolbar + Searchview Android
Android Везде ли выполняется метод finish() для закрытия activity
Android Google maps метод поиска фрагмента карт на разметке для разных версий андроид
Вызов метода из другого Activity Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.03.2016, 11:14     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #2
danek130995, интересно, я с таким методом не сталкивался. А onStart, onPause вызываются?
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
09.03.2016, 11:38  [ТС]     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #3
CoolMind, после recreate() перестает вызываться onPause(), но onStart() продолжает работать
Pablito
2417 / 1862 / 583
Регистрация: 12.05.2014
Сообщений: 6,601
Завершенные тесты: 1
09.03.2016, 12:01     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #4
Цитата Сообщение от danek130995 Посмотреть сообщение
после вызова метода recreate()
Цитата Сообщение от danek130995 Посмотреть сообщение
но onStart() продолжает работать
это бред

что за метод recreate ?
если это свой метод то как ты думаешь, тут все телепаты и знают что в нем написано?
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
09.03.2016, 12:02  [ТС]     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #5
Паблито, это не свой метод! Это метод Activity:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   
 
 * Cause this Activity to be recreated with a new instance.  This results
     * in essentially the same flow as when the Activity is created due to
     * a configuration change -- the current instance will go through its
     * lifecycle to {@link #onDestroy} and a new instance then created after it.
     */
 public void recreate() {
        if (mParent != null) {
            throw new IllegalStateException("Can only be called on top-level activity");
        }
        if (Looper.myLooper() != mMainThread.getLooper()) {
            throw new IllegalStateException("Must be called from main thread");
        }
        mMainThread.requestRelaunchActivity(mToken, null, null, 0, false, null, null, false);
    }
Pablito
2417 / 1862 / 583
Регистрация: 12.05.2014
Сообщений: 6,601
Завершенные тесты: 1
09.03.2016, 12:06     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #6
жесть, неужели такая острая необходимость пересоздавать активити?
архитектура хромает?
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
09.03.2016, 12:10  [ТС]     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #7
Паблито, меняется язык приложения, нужно сделать recreate()
Pablito
2417 / 1862 / 583
Регистрация: 12.05.2014
Сообщений: 6,601
Завершенные тесты: 1
09.03.2016, 12:16     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #8
для интереса проверил - onResume фрагмента вызывается
делал так - в onCreate активити добавил фрагмент через фрагмент менеджер
на кнопку повесил слушатель и по клику вызывал recreate()

в onResume фрагмента вывод в лог показал что метод срабатывает два раза после recreate

моя информация в принципе useless, но можно предположить что косяк в том коде который в recreate()
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.03.2016, 12:17     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #9
Цитата Сообщение от danek130995 Посмотреть сообщение
меняется язык приложения, нужно сделать recreate()
Что-то мне кажется, это плохой способ. Возможно, recreate() - глючный метод, но его использование вижу первый раз. В случае принудительного пересоздания активности можно потерять какие-то данные, например. В любом случае, эту операцию можно провести через завершение и открытие активности заново. Кроме того, непонятно, а что будет, если пользователь вернётся кнопкой "Назад" на предыдущую активность, её тоже надо будет пересоздавать?
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
09.03.2016, 12:26  [ТС]     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #10
CoolMind, нет, там нет такого, кнопка назад - всегда выход из приложения.
Паблито, У меня фрагмент создается через Fragment fragment = new Fragment() и затем уже через фрагмент-менеджер replace()

Добавлено через 34 секунды
CoolMind, как вы предлагаете
Цитата Сообщение от CoolMind Посмотреть сообщение
операцию можно провести через завершение и открытие активности заново
Добавлено через 4 минуты
CoolMind, вот так уже делал:
Java
1
2
                finish();
                startActivity(new Intent(this, MainActivity.class));
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.03.2016, 12:27     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #11
danek130995, например, так: http://stackoverflow.com/a/2488427/2914140.
Java
1
2
3
Intent starterIntent = getIntent();
finish();
startActivity(starterIntent);
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
09.03.2016, 12:30  [ТС]     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #12
CoolMind, recreate() Выполняется очень быстро, а стартактивити - очень долгая операция. К тому же, recreate() помогает сохранить текущий фрагмент открытый. В этом и преимущество recreate()
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.03.2016, 13:19     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #13
Цитата Сообщение от danek130995 Посмотреть сообщение
recreate() помогает сохранить текущий фрагмент открытый
В этом случае происходит ли полный цикл пересоздания фрагмента? Если да, чем отличается от такового у startActivity? Или запоминается только номер фрагмента?
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
09.03.2016, 13:20  [ТС]     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #14
CoolMind, видимо, полный цикл не происходит
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2016, 13:23     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity
Еще ссылки по теме:
Вызов метода при прокрутке activity Android
Неправильная периодичность вызова метода по таймеру Android
Как запустить метод в Activity из BroadcastReceiver Android
Android Метод вызова Activiti через ListView
Android Какой метод срабатывает при повторном показе фрагмента

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.03.2016, 13:23     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity #15
danek130995, хорошо. Вы не могли бы ради эксперимента попробовать сделать это в новом проекте? Понимаю, что долго, но если будет желание, отпишитесь. Вдруг, там происходит полный цикл.
Yandex
Объявления
09.03.2016, 13:23     Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru