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

Sự Khác Nhau Giữa Domain và Hosting Là Gì?

Sự khác nhau giữa domain và hosting là gì? Bài này giải thích ngắn và dễ hiểu nh

Shared Hosting hay VPS Hosting: Lựa chọn nào dành cho bạn?

Bài viết giải thích rõ shared hosting và vps hosting là gì và hướng dẫn chọn lựa

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=