Могут ли куда-то сохранятся аргументы при открытии фрагмента

Ответ

Да, аргументы фрагмента сохраняются автоматически при повороте экрана или пересоздании фрагмента через onSaveInstanceState(). Они хранятся в Bundle и восстанавливаются в onCreate().

Пример передачи аргументов:

val fragment = MyFragment().apply {
    arguments = bundleOf("key" to "value")
}

Важно: не передавайте через аргументы тяжелые объекты (Bitmap, Context и т.д.), так как Bundle имеет ограничение на размер (обычно 1MB). Для сложных данных используйте ViewModel или другие механизмы сохранения состояния.

Ответ 18+ 🔞

А, ну это ж классика, ёпта! Смотри, тут всё просто, как три копейки. Эти твои аргументы во фрагменте — они же не испаряются в никуда, когда телефон повернул или система вдруг решила твой процесс прибить, чтобы память освободить. Они автоматом, блядь, сохраняются в эту самую штуку — Bundle. Прям как в рюкзак складываются. Потом, когда фрагмент заново создаётся, в том же onCreate() их оттуда и вытаскивают. Удобно, чёрт возьми!

Вот смотри, как это обычно делают, чтобы не быть распиздяем:

val fragment = MyFragment().apply {
    arguments = bundleOf("key" to "value")
}

Всё, передал и забыл. Но тут, чувак, есть один важный момент, про который многие спотыкаются, а потом охуевают, почему всё падает. Нельзя в этот Bundle пихать что попало! Нельзя тащить туда здоровенные картинки (Bitmap), какие-нибудь Context-ы или другие объекты размером с бегемота. У Bundle есть лимит, обычно где-то 1MB, и если его превысить — будет тебе хиросима с ошибкой TransactionTooLargeException.

Поэтому запомни, как отче наш: если нужно передать что-то тяжёлое или сложное — не выёбывайся с аргументами. Используй нормальные инструменты для взрослых: ViewModel, SavedStateHandle или другие механизмы для сохранения состояния. Аргументы — для лёгких вещей: строк, чисел, флагов. Всё остальное — уже на твоей совести, и если накосячишь, сам потом и будешь разгребать, ебать копать.