Professional Documents
Culture Documents
Bai Thuyet Trinh
Bai Thuyet Trinh
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.
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.
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;
@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