Я работаю над приложением с тремя фрагментами. Когда приложение запущено, я хочу, чтобы по умолчанию был загружен один из фрагментов, и я достигаю этого, сделав транзакцию фрагмента в методе Activity OnCreate(), однако этот метод также вызывается, когда экран вращается, и в результате начальный фрагмент загружается каждый раз, когда пользователь поворачивает телефон. Как я могу избежать этого, поэтому транзакция фрагмента выполняется только в том случае, если приложение запущено, но нет, если оно повернуто.Android: Запуск только на App Launch
Отключение вращения не является вариантом, поскольку я хочу, чтобы он был доступен как в ландшафтном, так и в портретном.
Проверив ли уже есть фрагмент через менеджер фрагмента: http://stackoverflow.com/questions/9294603/get-currently-displayed-fragment также требует, чтобы фрагмент сохраняется в противном случае это намеренно не существует и вы должны сделать новый. – zapl
@zapl Я думаю, что это плохое предложение, поскольку оно требует сохранения фрагментов, что нарушает преимущества управления жизненным циклом. Стандартный способ - проверить savedInstanceState и только добавить Фрагмент в первый раз. Это во всем коде Google и является стандартным для Android. Люди не должны сохранять фрагменты, если это абсолютно необходимо, что почти никогда. – rharter
@rharter Конечно, вам нужно знать, что вы делаете, и почему, но почему они пытаются сделать сохраняющиеся фрагменты возможными, если вы не должны использовать это? И это тоже google http://developer.android.com/guide/topics/resources/runtime-changes.html#RetainingAnObject. Когда вы полагаетесь на состояние сохраненного экземпляра, вы разбиваете причинную цепочку, поэтому проверка с помощью диспетчера фрагментов ИМО лучше, когда возникает вопрос: «Мне нужно установить фрагмент». Если вы включаете сохраненные фрагменты, это другой вопрос. – zapl