Работал ли с Fragment

Ответ

Да, работал. Фрагменты — это переиспользуемые компоненты UI, которые можно комбинировать в Activity.

Основные моменты:

  • Жизненный цикл зависит от Activity, но имеет дополнительные методы (onAttach(), onCreateView(), onDestroyView()).
  • Для добавления используется FragmentManager и транзакции (beginTransaction().add/replace().commit()).
  • Можно передавать данные через Bundle в setArguments().

Пример:

class MyFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_my, container, false)
    }
}

Добавление в Activity:

supportFragmentManager.beginTransaction()
    .add(R.id.container, MyFragment())
    .commit()

Использовал ViewBinding в фрагментах для безопасного доступа к View.

Ответ 18+ 🔞

А, фрагменты? Да, работал, конечно. Это ж как детали конструктора — кусочки интерфейса, которые можно впихнуть в активити и переиспользовать, где надо.

Если по делу:

  • Жизненный цикл у них привязан к активити, но там своих костылей ещё овердохуища. Есть свои особые методы вроде onAttach(), onCreateView(), onDestroyView() — с ними и танцуешь.
  • Чтобы запихнуть фрагмент куда надо, нужен FragmentManager и эти вечные транзакции: beginTransaction().add/replace().commit(). Без этого нихуя не работает.
  • Данные между ними передавать — отдельная песня. Обычно пихаешь всё в Bundle через setArguments(), а потом выковыриваешь. Главное — не перепутать.

Вот тебе пример, смотри:

class MyFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Надуваешь тут свою верстку и возвращаешь
        return inflater.inflate(R.layout.fragment_my, container, false)
    }
}

А чтобы этот кусок в активити воткнуть, делаешь так:

supportFragmentManager.beginTransaction()
    .add(R.id.container, MyFragment()) // Контейнер — это место в разметке активити
    .commit()

Я, кстати, в фрагментах ViewBinding юзаю, чтобы к вьюхам обращаться. Так надёжнее, не вылетит с NullPointer, если что-то не так. А то бывало, ёпта, искал элемент, а его уже в помойке — доверия ебать ноль к старому способу.