Где лучше использовать привязку представления фрагментами? (onCreateView против onViewCreated)

#android #android-fragments #android-viewbinding

Вопрос:

Я видел несколько примеров, когда привязка была определена и использовалась в onCreateView() с помощью inflate() и в onViewCreated() с помощью bind().

В чем разница? И где лучше оперировать нашими представлениями(RecyclerView, TextView и так далее)?

Документация Google показывает пример, подобный этому:

 override fun onCreateView(
   inflater: LayoutInflater,
   container: ViewGroup?,
   savedInstanceState: Bundle?
): View? {
   _binding = ResultProfileBinding.inflate(inflater, container, false)
   val view = binding.root
   return view
}
 

Но также в некоторых статьях мы можем увидеть что-то вроде этого:

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    _binding = ResultProfileBinding.bind(view)
}
 

Ответ №1:

Рекомендуется использовать функцию инициализации привязки onCreateview , так как она будет раздувать макет в тот же момент, когда создается представление, а затем использовать это внутри onViewCreated и другие функции.

Также вам нужно сделать _binding = null onDestroyView это, чтобы предотвратить утечки.

Комментарии:

1. Кроме того, я бы сказал, что его использование с onCreateView удаляет шаблон для создания представления и так далее.

2. Итак, если я раздул макет в onCreateView, используя binding.inflate, то мне не нужно привязывать представление в onViewCreated?

3. да @MrArtyD в этом случае вам не нужно привязывать представление в onViewCreated