You are on page 1of 28

Fragment

Thành viên nhóm bao gồm:


o Trần Quang Trường
o Nguyễn Quang Hà
o Nguyễn Minh Triết
o Phan Duy Cửu
Nội dung bài thuyết trình

o Giới thiệu tổng quan


o Các ứng dụng nào cần sử dụng Fragment
o Các cách thức gắn kết Fragment với Activity
o Xây dựng ứng dụng minh hoạ
Nội dung

01 02
Giới thiệu tổng quan Ứng dụng
Ý nghĩa, chức năng, chu kỳ, nào cần sử dụng
cơ chế hoạt động…của Fragment
Fragmen

03 04
Cách thức Xây dựng ứng dụng
gắn kết Fragment với Tĩnh + Động
Activity
01
Giới thiệu tổng quan
Tổng quan về Fragment
o Một Fragment đại diện cho một phần có thể tái sử dụng của giao
diện người dùng trong ứng dụng của bạn.
o Fragment định nghĩa và quản lý bố cục của riêng nó, có chu kỳ
sống riêng, và có khả năng xử lý các sự kiện đầu vào của riêng
mình.
o Fragment không thể tồn tại một cách độc lập. Chúng phải được
chứa bởi một activity hoặc một fragment khác.
o Cấu trúc view hierarchy của fragment trở thành một phần của
hoặc gắn kết với cấu trúc view hierarchy của host.
Ý nghĩa của Fragment

o Fragment trong Android đóng vai trò quan trọng trong việc
quản lý giao diện người dùng.
o Nó cho phép tách một phần của giao diện người dùng để có
thể quản lý, tái sử dụng và tương tác dễ dàng hơn.
o Giúp tối ưu hóa quản lý và tái sử dụng giao diện trong ứng
dụng Android.
Chức năng của Fragment
Phân chia Giao Diện:
o Cho phép phân chia giao diện ứng dụng thành các phần nhỏ, tự đủ độc lập.
o Tạo cơ hội tái sử dụng các thành phần giao diện.
Quản lý Layout và UI Riêng Biệt:
o Quản lý layout và UI một cách độc lập.
o Có thể thực hiện các hoạt động như hiển thị, ẩn, cập nhật giao diện, xử lý sự kiện người dùng.
Phản ứng với Vòng Đời:
o Có chu kỳ sống riêng, với các trạng thái như khởi tạo, tạo, bắt đầu, tạm dừng, kết thúc.
o Có các phương thức gọi mà bạn có thể tận dụng để xử lý hành động tương ứng với từng giai đoạn của chu kỳ sống.
Tương tác với Activity và Fragment Khác:
o Có thể tương tác với Activity chứa nó hoặc với các Fragment khác thông qua FragmentManager.
o Cho phép truyền dữ liệu hoặc giao tiếp qua Activity hoặc giữa các Fragment.
Tối Ưu Hóa Tái Sử Dụng:
o Giúp tối ưu hóa việc quản lý giao diện và tái sử dụng các phần của giao diện trong nhiều màn hình hoặc trạng thái
khác nhau.
Vòng đời một Fragment
Mỗi Fragment có vòng đời riêng. Khi người dùng tương tác với ứng dụng, các Fragment chuyển qua các
trạng thái khác nhau trong vòng đời của chúng: CREATED, STARTED, RESUMED, và DESTROYED.

Để quản lý vòng đời, Fragment thực hiện LifecycleOwner, cung cấp một đối tượng Lifecycle thông qua
phương thức getLifecycle(). Các trạng thái Lifecycle được biểu diễn trong enum Lifecycle.State.

Fragment cung cấp callback methods như onCreate(), onStart(), onResume(), onPause(), onStop(), và
onDestroy(), tương ứng với các

View của một Fragment có một Lifecycle riêng, độc lập với vòng đời của Fragment. Fragment duy trì một
LifecycleOwner cho view của mình, mà có thể được truy cập thông qua getViewLifecycleOwner() hoặc
getViewLifecycleOwnerLiveData(). Việc sử dụng Lifecycle của view hữu ích trong việc theo dõi các sự
kiện chỉ khi view của Fragment tồn tại.
Vòng đời của Fragment cung cấp thông tin chi tiết về các trạng thái và quy tắc xác định trạng thái của vòng
đời Fragment, cũng như mối quan hệ giữa các trạng thái Lifecycle và các callback của vòng đời Fragment
o Hình minh họa cho thấy từng trạng thái
Lifecycle của Fragment và mối liên hệ giữa
chúng với phương thức gọi lại trong vòng đời
của mảnh và thành phần hiển thị Lifecycle
của Fragment.

Hình minh họa.


Cơ chế hoạt động của Fragment
Bao gồm :
Quản lý vòng đời (Lifecycle management):
o Giống như Activity, Fragment cũng có các phương thức quản lý vòng đời như onCreate(), onStart(), onResume(),
onPause(), onStop(), onDestroy() và nhiều hơn nữa. Các phương thức này được gọi bởi hệ thống Android để cung cấp
quyền kiểm soát vòng đời và chuẩn bị cho các tác vụ cần thiết.
Giao tiếp với Activity:
o Fragment có thể giao tiếp với Activity chứa nó thông qua sự kết hợp của Interface, Callbacks, và lời gọi hàm của
FragmentManager. Điều này cho phép Fragment gửi và nhận thông tin, thông báo và tương tác với Activity chứa nó.
Quản lý giao diện:
o Fragment giúp quản lý và hiển thị giao diện trên một phần hoặc một màn hình. Chúng có thể được thêm hoặc xóa hoặc thay
thế trong một Activity sử dụng FragmentManager. Điều này mang lại sự linh hoạt và tiện lợi trong thiết kế giao diện và
tương tác người dùng.
Lưu trạng thái:
o Fragment cũng có khả năng lưu trữ và khôi phục trạng thái của nó khi Activity chứa nó trải qua các vòng đời như
orientation change (thay đổi hướng màn hình) hoặc ứng dụng bị hủy.Navigation: FragmentManager hỗ trợ việc thêm và
loại bỏ các Fragment trong một Activity thông qua giao diện người dùng. Điều này giúp quản lý các luồng điều hướng
trong ứng dụng, chẳng hạn như chuyển đổi giữa các trang hoặc mục tiêu khi sử dụng thông báo hoặc sự kiện người dùng.
02
Ứng dụng nào cần sử
dụng Fragment
Ứng dụng có giao diện phức tạp:
o Các ứng dụng có giao diện phức tạp, bao gồm nhiều phần như thanh điều hướng,
phần hiển thị danh sách, và chi tiết của mục được chọn.
Ứng dụng nào Ứng dụng đa thiết bị:
o Việc sử dụng Fragment trong các ứng dụng cho cả điện thoại di động và máy tính

thì cần sử dụng bảng giúp dễ dàng điều chỉnh và tối ưu hóa giao diện cho từng loại thiết bị một
cách hiệu quả.

Fragment ? Ứng dụng cần tái sử dụng các thành phần giao diện:
o Fragment cho phép tái sử dụng các thành phần giao diện một cách dễ dàng. Điều
này giúp giảm việc viết mã lại và tăng cường tính module hóa của ứng dụng.
Ứng dụng với giao diện đa cửa sổ (multi-pane):
o Các ứng dụng hiển thị nhiều thông tin cùng một lúc, như ứng dụng dạng
landscape trên máy tính bảng, thường sử dụng Fragment để quản lý các phần khác
nhau trên cùng một màn hình.
Ứng dụng có sử dụng tính năng động (dynamic feature):
o Việc sử dụng Fragment trong ứng dụng có tính năng động, nơi các phần của ứng
dụng có thể được tải và gỡ bỏ khi cần, giúp quản lý tài nguyên và tối ưu hóa việc
sử dụng bộ nhớ.
Ứng dụng cần hỗ trợ back stack và navigation:
o Fragment cung cấp hỗ trợ cho việc quản lý back stack (ngăn xếp lại các màn hình
trước đó) và hỗ trợ navigation trong ứng dụng.
Ví dụ về một số ứng
dụng sử dụng Fragment Ứng dụng email phổ biến của Google sử dụng
Fragment để hiển thị danh sách thư và nội
Email dung chi tiết của thư được chọn trên cùng một
màn hình.

Ứng dụng mạng xã hội hàng đầu sử dụng


Fragment để quản lý giao diện chính như
Facebook
danh sách tin tức, trang cá nhân và phần
bình luận.

Ứng dụng chia sẻ hình ảnh và video


phổ biến sử dụng Fragment để chia dữ
Instagram liệu thành các phần khác nhau như
danh sách tin tức, trang cá nhân và khu
vực tìm kiếm.
03
Cách thức gắn kết
Fragment với Activity
Các Cách Thức Gắn Kết Fragment với Activity

Gắn kết Fragment thông qua XML

Gắn kết một Fragment theo phương thức


lập trình.
Gắn kết Fragment thông qua XML

o Để gắn kết một Fragment thông qua XML, bạn có thể sử dụng phần tử
<fragment> hoặc FragmentContainerView trong tệp layout XML
của Activity.
o Dưới đây là cách sử dụng mỗi phương pháp:
Sử dụng <fragment>.

o Thuộc tính android:name xác định tên lớp của Fragment cần khởi tạo.
Sử dụng FragmentContainerView.

o Thuộc tính android:name xác định tên lớp của Fragment cần khởi tạo.
o Khi layout của Activity được nạp, Fragment được chỉ định sẽ được tạo ra, phương thức
onInflate() sẽ được gọi trên Fragment mới được tạo, và một FragmentTransaction sẽ
được tạo ra để thêm Fragment này vào FragmentManager.
Gắn kết một Fragment theo phương thức
lập trình.

o Để gắn kết một Fragment theo phương thức lập trình, bạn có thể sử
dụng FragmentManager và FragmentTransaction trong phạm vi
các phương thức của Activity hoặc Fragment.
o Dưới đây là một ví dụ đơn giản về việc thêm một Fragment từ một
Activity bằng phương thức lập trình.
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class YourActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) { o Trong phương thức onCreate() của Activity, chúng
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout); ta sử dụng FragmentManager để quản lý
// Sử dụng FragmentManager để quản lý Fragments Fragments và bắt đầu một FragmentTransaction.
FragmentManager fragmentManager = getSupportFragmentManager();
o Sau đó, chúng ta khởi tạo một instance của
// Bắt đầu một FragmentTransaction
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); Fragment (YourFragment) và sử dụng
// Thêm Fragment vào layout với ID là R.id.fragment_container FragmentTransaction để thêm Fragment này vào
YourFragment yourFragment = new YourFragment();
fragmentTransaction.add(R.id.fragment_container, yourFragment); layout có ID là R.id.fragment_container. Cuối
// Kết thúc giao dịch và xác nhận thay đổi cùng, chúng ta kết thúc giao dịch bằng phương
fragmentTransaction.commit();
} thức commit() để xác nhận thay đổi và áp dụng
}
chúng lên FragmentManager.
04
Xây dựng ứng dụng
Xậy dựng ứng dụng
minh họa
Áp dụng Fragment tĩnh

Áp dụng Fragment động


Ứng dụng minh họa
Thêm Fragment vào viewpager (main activity)
Chuyển tab trong viewpager (main activity)
Chuyển Fragment cha sang Fragment con trong
viewpager (main activity)
Call back Fragment cha
Cảm ơn các thầy và các bạn
đã nghe nhóm thuyết trình

You might also like