Intereting Posts
Исключение NullPointerException при отправке запроса ISO8583 Режим фокусировки камеры Android Неправильное поведение атрибутов гравитации новых представлений Android-панели Android Как использовать веб-службы в android? TextColor, определенный в стиле, применяется к TextView, но не Button? Действительно запутался с setPreviewCallback в Android, нужен совет В приложении для Android должен ли я иметь одного поставщика контента для каждой таблицы или только одного для всего приложения? Проблема с фоновым изображением макета Кнопки внутри ScrollView внутри галереи не реагируют на щелчок Получить миниатюрное изображение видео с видео URL Void … значение параметра в описании функции java Вывод производительности Android на сетевой диск (samba share) Как просмотреть подробные данные определенного элемента списка Java.lang.NoSuchMethodError: android.app.Notification $ Builder.build Прокрутка NestedScrollView с помощью recycliewiew

Почему при добавлении фрагмента вы проверяете для savedInstanceState == null?

В фрагменте doc в одном из примеров они проверяют для savedInstanceState == null при добавлении фрагмента:

 public static class DetailsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { // If the screen is now in landscape mode, we can show the // dialog in-line with the list so we don't need this activity. finish(); return; } if (savedInstanceState == null) { // During initial setup, plug in the details fragment. DetailsFragment details = new DetailsFragment(); details.setArguments(getIntent().getExtras()); getFragmentManager().beginTransaction().add(android.R.id.content, details).commit(); } } } 

Какова цель этой проверки? Что произойдет, если его там нет?

Какова цель этой проверки?

Чтобы не добавлять фрагмент дважды, хотя я предпочитаю проверять, есть ли там фрагмент вместо того, чтобы полагаться на этот Bundle null .

Что произойдет, если его там нет?

Изначально ничего не происходит, так как Bundle будет null когда активность будет сначала создана.

Тем не менее, пользователь поворачивает экран устройства от портрета к пейзажу. Или пользователь меняет языки. Или пользователь помещает устройство в док-станцию, поставляемую производителем. Или пользователь выполняет любое другое изменение конфигурации.

Ваша деятельность будет уничтожена и воссоздана по умолчанию. Ваши фрагменты также будут уничтожены и воссозданы по умолчанию (исключение: те, для которых setRetainInstance(true) , которые отделяются от старого действия и привязаны к новому).

Итак, во второй раз создается действие – экземпляр, созданный в результате изменения конфигурации – ваш фрагмент уже существует , поскольку он был либо воссоздан, либо сохранен. Вам не нужен второй экземпляр этого фрагмента (обычно), и поэтому вы предпринимаете шаги, чтобы обнаружить, что это произошло, и не запускать новое FragmentTransaction .