С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
aquaMakc
473 / 386 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
1

FragmentStatePagerAdapter сохранить состояние между смертями активности

01.02.2017, 13:33. Просмотров 260. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
Есть активность, на ней создаётся базовый фрагмент, которому задаю наследника FragmentStatePagerAdapter, имеющий в своём составе 3 фрагмента.
Соответственно при переворачивании активность с фрагментом пересоздаётся и на экране отображается первый фрагмент из адаптера.
Сохранение фрагмента с помощью
Java
1
setRetainInstance(true);
не помогает.
Есть мысль либо сохранения в Bundle базового фрагмента с последующей выгрузкой, либо сохранением индекса отображаемого фрагмента из адаптера.
В первом варианте не нашёл, как сохранять фрагмент (и можно ли вообще его сохранять), во втором - как вручную задать адаптеру какой фрагмент отображать.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2017, 13:33
Ответы с готовыми решениями:

Как сохранить состояние хронометра при повороте экрана?
в программе запускается хронометр Chronometer chronometer = (Chronometer)...

Сохранить состояние презентера при пересоздании (повороте) активити
Вот у презентера можно реализовать метод onDetach() в котором он обнуляет...

Как сохранить состояние Service после перезагрузки телефона?
Как сохранить состояние Service после перезагрузки телефона??? т.е мне нужно...

Изменение настроек приложения из активности в рамках активности
Друзья, помогите разобраться! имею наработки приложения-рисовалки, там есть...

Как сохранить состояние выделенных checkbox и list data в Listactivity?
Здравствуйте. Было задание сделать ListView c CheckBox, при нажатии на кнопку...

5
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
01.02.2017, 13:40 2
если вы добавите в активити в манифесте вот это:
XML
1
    android:configChanges="orientation|screenSize">
то при переворачивании она не будет пересоздаваться
1
Hellrider_
50 / 50 / 4
Регистрация: 12.03.2013
Сообщений: 171
02.02.2017, 16:55 3
Можно сохранять ваш базовый фрагмент таким макаром
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SaveObject extends Fragment{
    Object data;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }
 
    public void setData(Object data){
        this.data = data;
    }
    public Object getData(){
        return data;
    }
}
в онкриейт

Java
1
2
3
4
5
6
7
8
9
10
//проверям или есть сохранненный объект и получаем ссылку
saveObject = (SaveObject) getFragmentManager().findFragmentByTag(SAVE_FRAG);
        if(saveObjectChar != null){
            baseFrag = (BaseFrag) saveObject.getData();
        }else{
                saveObject = new SaveObject();
                    baseFrag = new BaseFrag();                    
                    saveObject.setData(baseFrag);
                    getFragmentManager().beginTransaction().add(saveObject, SAVE_FRAG).commit();
}
Правда прийдется все имеющиеся ссылки на контекст активити обновлять.

Цитата Сообщение от shavuz Посмотреть сообщение
android:configChanges="orientation|screenSize">
для 4+ версий
Java
1
android:configChanges="keyboardHidden|orientation|screenSize
Но эту фичу не советуют использовать. Есть всякие подводные камни, с которыми потом можно нехило поиметь головняка). Фича конечно очень клевая, не нужно думать о пересоздании обьектов и т.д., но лучше научиться сразу работать без этой штуки.
0
Pablito
2777 / 2206 / 746
Регистрация: 12.05.2014
Сообщений: 7,737
Завершенные тесты: 1
02.02.2017, 16:57 4
Цитата Сообщение от Hellrider_ Посмотреть сообщение
Но эту фичу не советуют использовать. Есть всякие подводные камни, с которыми потом можно нехило поиметь головняка). Фича конечно очень клевая, не нужно думать о пересоздании обьектов и т.д., но лучше научиться сразу работать без этой штуки.
чушь полная, тема уже поднималась и не раз
0
Hellrider_
50 / 50 / 4
Регистрация: 12.03.2013
Сообщений: 171
02.02.2017, 17:19 5
Цитата Сообщение от Паблито Посмотреть сообщение
чушь полная, тема уже поднималась и не раз
Да я поднимал эту тему и Вы написали тоже самое . Но, в документации не зря же пишут, что использовать стоит в крайнем случае бла-бла-бла... Вот и нет уверенности каким курсом все таки идти.
0
aquaMakc
473 / 386 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
02.02.2017, 17:21  [ТС] 6
Hellrider_, как я понял из документации минусом данного способа может быть только то, что придётся вручную изменять ресурсы, которые при обычном исполнении изменяются автоматически. Например, атрибуты виджетов в лейатуах.
0
02.02.2017, 17:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2017, 17:21

Сохранить признак активности (Enabled) кнопок между запусками программы
Всем прив! помогите с одним вопросом суть такая на одной форме находится четыре...

Сохранить состояние checkBox между разными сеансами работы
Есть приложение, в нем нужно сохранить значение checkBox, то есть при следующем...

Сохранить состояние кнопки (Enabled) между запусками приложения
Ребят есть код button121.Enabled:=false; нужно сделать так чтобы этот код...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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