#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