Fragments
- Một Fragment đại diện cho một hành động hoặc một phần của user interface trong một activity.
- Có thể kết hợp nhiều fragment trong cùng một actitvity để xây dựng một multi-pane UI và tái sử dụng một fragment trong nhiều actitvity
- Có thể coi fragment là một thành phần mô-đun của một actitvity, nó có lifecycle của riêng mình, tiếp nhận các event, và có thể thêm hoặc loại bỏ trong khi activity đang chạy.
- Fragment được nhúng vào một actitvity và fragment's lifecycle bị ảnh hưởng trực tiếp bời lifecycle của activity chứa nó. Ví dụ: khi activity paused tất cả fragment chứa trong nó đều paused.
- Tuy nhiên khi một activity đang chạy (trạng thái resumed) bạn có thể thao tác độc lập với mỗi fragment.
- Khi bạn thêm một fragment như một phần của layout activity, nó phải được đặt trong một ViewGroup và nằm bên trong hệ thống phân cấp activity's view
- Có thể thêm một fragment vào activity layout bằng cách khai báo một element <fragment> trong file layout hoặc từ code bằng cách thêm nó vào một ViewGroup có sẵn.
- Fragment không nhất thiết phải là một phần của activity layout, bạn có thể sử dụng một fragment mà không cần tới UI của nó như một thành phần ẩn của activity.
Tiêu chí thiết kế
Android đã giới thiệu fragment trong Android 3.0 (API level 11). Chủ yếu để hỗ trợ việc thiết kế UI linh động trên các màn hình lớn, như tablet. Màn hình tablets lớn hơn các thiết bị cầm tay vì thế có nhiều khoảng trống đề kết hợp và thay đổi các thành phần UI. Fragment cho phép thiết kế mà không cần bạn phải quản lý các thay đổi phức tạp của hệ thống phân cấp view. Bằng cách chia layout ra các fragment, bạn có thể chỉnh sửa cách thức xuất hiện của activity tại thời điểm runtime và bảo toàn các thay đổi của nó trong một back stack được quản lý bởi activity.
Ví dụ. Một ứng dụng sử dụng một fragment để hiển thị list các bài viết bên trái, và một fragment khác để hiển thị nội dung của bài viết đó bên phải. Cả 2 fragment xuất hiện trong một activity, ngay cạnh nhau. Mỗi fragment có một lifecycle riêng và xử lý các event của chúng.
Bạn nên thiết kết mỗi fragment như một mô-đun và có thể tái sử dụng. Mỗi fragment đều có layout, lifecycle và các hành vi riêng vì thế bạn có thể sử dụng 1 fragment trên nhiều activity. Tránh thao tác trực tiếp 1 fragment từ 1 fragment khác. Điều này đặc biệt quan trọng bởi vì một mô-đun fragment cho phép bạn thay đổi sự kết hợp fragment cho các kích thước màn hình khác nhau. Khi thiết kế ứng dụng để hỗ trợ cả tablets và cầm tay, bạn có thể tái sử dụng fragment trong các thiết lập layout khác nhau để tối ưu trải nghiệm người dùng dựa trên khoản không gian sẵn có của màn hình. Ví dụ trên các thiết bị cầm tay, bạn cần phải ngăn cách các fragment để cung cấp một single-pane UI trong khi không thể sử dụng nhiều fragment trong một layout.