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

So sánh Webhook và API: Khi nào nên sử dụng?

Trong lĩnh vực công nghệ thông tin và phát triển phần mềm, Webhook và API là hai th

Những ngành nghề AI có thể thay thế dần trong tương lai.

Những ngành nghề AI có thể thay thế trong tương lai gần Dựa trên các báo cáo và

Tạo Subdomain miễn phí với is-a.dev 🤪

Cuối tuần mọi người thế nào, mình thì rảnh quá lướt Facebook, tớ tình cờ th

Dùng TailwindCSS v4 trong SpringBoot + JTE

Giới thiệu JTE là gì? JTE (Java Template Engine) là một template engine an toàn, nhẹ và