FragmentContainerView là gì? Lợi ích của nó so với FrameLayout

Nếu bạn đang đọc bài viết này thì chắc chắn bạn là 1 dev Android và đã từng làm việc với Fragment hay FrameLayout rồi nhỉ. Nếu như bạn chưa sử dụng đến thằng FragmentContainerView thì bạn cũng dùng FrameLayout để tương tác với các Fragment rồi. Trước đây, ta sử dụng FrameLayout để chứa

Nếu bạn đang đọc bài viết này thì chắc chắn bạn là 1 dev Android và đã từng làm việc với Fragment hay FrameLayout rồi nhỉ. Nếu như bạn chưa sử dụng đến thằng FragmentContainerView thì bạn cũng dùng FrameLayout để tương tác với các Fragment rồi.

Trước đây, ta sử dụng FrameLayout để chứa các Fragment, nhưng sau này FragmentContainerView là View được Android đề xuất sử dụng thay thế cho FrameLayout.

Hai điểm chính mà FragmentContainerView đã cải thiện so với FrameLayout

  1. Các transaction của fragment được thực hiện khá dễ dàng như với FrameLayout. Bây giờ nó được xử lý bởi FragmentContainerView, nơi mà các fragment đang đi vào (entering) container sẽ nằm dưới các fragment đang đi ra (exiting) khỏi container cho đến khi nó hoàn toàn ra khỏi ngoài màn hình.
  2. Trước đây với FrameLayout, khi ta custom animation của các fragment với enter animation hoặc exit animation sẽ gặp vấn đề về thứ tự Z-index của các fragment, có lỗi UI/UX khi chạy transaction giữa các fragment.

FragmentContainerView là gì?

  • Nó là View được google đề xuất để chứa các Fragment.
  • Nó kế thừa từ FrameLayout, thêm các tính năng bổ sung.
  • Nếu thêm bất kỳ một View nào khác trong FragmentContainerView ngoài Fragment sẽ throw ngay IllegalStateException.
  • Thường được set trong xml layout của Activity.

Dùng FragmentContainerView

  • Có thể thực hiện thêm fragment vào container được dynamic như thông thường với code vì nó kế thừa từ FrameLayout
supportFragmentManager.beginTransaction().add(R.id.fragmentContainer, OneFragment::class.java,null).commit()
  • Không dùng FragmentContainerView để thay thế các ViewGroup như FrameLayout, LinearLayout v.v
  • FragmentContainerView chỉ cho phép thêm các View được trả về bởi hàm onCreateView() của Fragment, nếu không sẽ dẫn đến IllegalStateException
  • Custom animation các fragment trong FragmentContainerView:
<actionandroid:id="@+id/action_oneFragment_to_twoFragment"app:enterAnim="@android:anim/slide_in_left"app:exitAnim="@android:anim/slide_in_left"app:destination="@id/twoFragment"/>

Các thuộc tính của FragmentContainerView

<androidx.fragment.app.FragmentContainerViewandroid:id="@+id/fragmentContainerView"android:layout_width="match_parent"android:layout_height="match_parent"android:name="androidx.navigation.fragment.NavHostFragment"app:defaultNavHost="true"app:navGraph="@navigation/nav_home"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"/>
  • android:name: Tên class của việc implement NavHost.
  • app:navGraph: Liên kết với một navigation graph – chỉ định các destination mà user có thể điều hướng đến.
  • app:defaultNavHost="true": Đảm bảo cho NavHostFragment sẽ bắt chặn để xử lý nút Back của hệ thống. Chỉ có duy nhất một NavHost được đặt default.

Kết luận

FragmentContainerView là View được google đề xuất để chứa và quản lý các fragment, nên mình cứ thế mà dùng thôi 😄

Bài viết được dịch từ:

https://soni-karsh53.medium.com/what-is-fragmentcontainerview-its-benefits-over-framelayout-8abe8598fcc5

Nguồn: viblo.asia

Bài viết liên quan

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 2

viết lại nội dung này ” Phát hiện các cuộc tấn công Cross Site Scripting (XSS)

AI Chatbot 2025: Xu Hướng Tất Yếu Cho Doanh Nghiệp Dẫn Đầu

Giới thiệu AI chatbots đã trải qua một hành trình đáng kể, từ những công cụ t

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 1

Tấn công web là gì? Ứng dụng web là các ứng dụng cung cấp dịch vụ cho người

SEO Mũ Trắng, Mũ Đen, Mũ Xám: Hiểu Biết và Lựa Chọn Phù Hợp

SEO Mũ Trắng, Mũ Đen, Mũ Xám: Hiểu Biết và Lựa Chọn Phù Hợp Trong kỷ nguyên s