Advertisement
  1. Code
  2. Android SDK

Android từ đầu: Activity và Fragment

Scroll to top
Read Time: 8 min
This post is part of a series called Android From Scratch.
Android From Scratch: Understanding Views and View Groups
Android From Scratch: Connecting Activities and Applications

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Khi người dùng tương tác với một ứng dụng trên thiết bị Android, họ hầu như luôn luôn tương tác với một Activity, một màn hình đơn nhất trên thiết bị. Sau khi Google phát hành phiên bản Android Honeycomb, các đối tượng Fragment đã được thêm vào hệ điều hành để cho phép sử dụng lại code dễ dàng hơn và mỗi lần thay đổi nội dung trên màn hình mà không cần phải huỷ/xây dựng lại một Activity mới.

Trong hướng dẫn này, bạn tìm hiểu thêm về các đối tượng ActivityFragment trên Android, vòng đời của chúng, và khi nào và làm thế nào bạn nên sử dụng chúng trong các ứng dụng của riêng bạn.

1. Activity

Activity là một thành phần chính của hệ sinh thái Android và là một trong những khái niệm đầu tiên mà bạn cần phải nắm bắt khi bạn trở nên quen thuộc hơn với việc phát triển Android. Các Activity đóng vai trò như một màn hình duy nhất mà sẽ được hiển thị cho người dùng, và chúng thường đóng gói rất nhiều logic của chương trình.

Khi bạn tạo ra một lớp Activity, thủ công hoặc thông qua một trong các mẫu của Android Studio, bạn cần phải xác định nó trong tập tin AndroidManifest.xml của dự án, nếu nó không được thêm vào, như sau:

1
<activity android:name=".MainActivity">
2
    <intent-filter>
3
        <action android:name="android.intent.action.MAIN" />
4
5
        <category android:name="android.intent.category.LAUNCHER" />
6
    </intent-filter>
7
</activity>

Trong đoạn code ở trên, bạn cũng thấy một thẻ intent-filter với một actioncategory. Mặc dù đi sâu vào chi tiết đối với các phần tử này nằm ngoài phạm vi của hướng dẫn này, nhưng bạn nên biết rằng những dòng bổ sung đó là cách hệ thống nhận biết Activity nào để mở trước tiên khi người dùng chọn ứng dụng của bạn.

Một khi bạn đã tạo ra một Activity, bạn có thể cần kết hợp nó với một tập tin Layout XML để bạn có thể dễ dàng sử dụng các đối tượng View từ Layout. Bạn có thể làm điều này trong phương thức onCreate().

1
@Override
2
protected void onCreate(Bundle savedInstanceState) {
3
    super.onCreate(savedInstanceState);
4
    setContentView(R.layout.activity_main);
5
}

Sau khi gọi setContentView(), bạn có thể bắt đầu tham chiếu đến các đối tượng View từ các tập tin Layout XML.

Vòng đời Activity

Tại thời điểm này, bạn có thể tự hỏi onCreate() là gì và lý do tại sao chúng ta sử dụng nó. Phương thức onCreate() là một trong những phương thức kết hợp với vòng đời của Activity. Nó được gọi khi Activity lần đầu được tạo ra. Đây là nơi bạn có thể thực một số bước khởi tạo chung trong Activity của bạn vì nó bảo đảm sẽ được gọi trước tiên trong vòng đời Activity như bạn có thể nhìn thấy dưới đây.

Android Activity Life Cycle DiagramAndroid Activity Life Cycle DiagramAndroid Activity Life Cycle Diagram
Nguồn: Trang Google Developer

Sơ đồ ở trên cho thấy thứ tự của các phương thức được gọi khi một Activity đi ra hoặc đi vào các trạng thái khác nhau có thể:

  • onCreate() được gọi ngay lập tức khi một Activity được tạo ra, như tên gọi của nó. onDestroy() thì ngược lại và được gọi khi Activity được xoá khỏi bộ nhớ điện thoại. Có một vài trường hợp nhỏ nơi onDestroy() có thể không được gọi, nhưng chúng nằm ngoài phạm vi của hướng dẫn này.
  • onStart() được gọi khi một Activity hiện hữu đối với người dùng và onStop() được gọi khi mà Activity không còn được nhìn thấy. Cả hai có thể được kích hoạt khi một ứng dụng được đưa vào nền bằng cách sử dụng nút home của thiết bị và khi ứng dụng được đưa trở lại màn hình.
  • onResume()onPause() được liên kết với Activity đang ở trên màn hình. Nếu một thành phần khác đi vào màn hình, chẳng hạn như một hộp thoại hoặc một Activity khác, thì phần này của vòng đời được kích hoạt.

Hiểu từng phương thức này khi nào được gọi sẽ giúp bạn khỏi rắc rối khi bạn phát triển và cần phải phân chia/tái phân bổ các tài nguyên bên trong ứng dụng của bạn.

Xử lý các thay đổi cấu hình

Bây giờ thì bạn đã nắm một chút về vòng đời Activity, đã đến lúc bạn đi sâu vào những gì sẽ xảy ra khi một Activity bị phá hủy và tái tạo bởi hệ thống. Điều này có thể xảy ra trong một vài tình huống, phổ biến nhất là khi màn hình được xoay.

Các Activity trải qua quá trình phân chia tiêu chuẩn của các phương thức onStop() onPause(), onDestroy(), và sau đó onCreate() khi một đối tượng mới của Activity được tạo ra.

Một phương thức khác là không thấy có trong biểu đồ ở trên là onSaveInstanceState(). Phương thức này được gọi khi một Activity bị phá hủy và cho phép bạn lưu các thông tin đơn giản trong Bundle. Khi onCreate() được gọi một lần nữa, bạn có thể trích xuất thông tin mà bạn đã lưu trước đó. Điều tương tự cũng có thể được thực hiện từ phương thức onRestoreInstanceState().

2. Fragment

Được giới thiệu cùng với Android 3.0 (Honeycomb), các đối tượng Fragment là một công cụ tuyệt vời xử lý nhiều vấn đề khi chỉ có các lớp Activity. Fragment cho phép tổ chức các thành phần giao diện người dùng của dự án cho các thiết bị khác nhau bằng cách cho bạn khả năng hiển thị nhiều phần giao diện người dùng trên một màn hình lớn hơn, chẳng hạn như một máy tính bảng, hoặc để hiển thị một cái tại một thời điểm và liên kết chúng với nhau trên thiết bị di động nhỏ.

Chúng cũng giúp phân đoạn code thành khối dễ quản lý, thay vì phải dựa vào các lớp Activity lớn, phức tạp. Một tính năng cuối cùng, và có giá trị nhất, là các Fragment cho phép ứng dụng dễ dàng điều hướng và cung cấp một cách đơn giản để giao tiếp qua lại giữa các phần khác nhau của ứng dụng.

Vòng đời

Giống như Activity, lớp Fragment có riêng nó vòng đời giúp quản lý Fragment từ khi nó được gắn vào một Activity cho đến khi nó bị phá hủy. Hiểu rõ vòng đời giúp bạn tạo ra ứng dụng ổn định và nó cũng giúp bạn dễ dàng gỡ lỗi.

Android Fragment Life Cycle DiagramAndroid Fragment Life Cycle DiagramAndroid Fragment Life Cycle Diagram
Nguồn: Trang Google Developer
  • Phương thức onAttach()onDetach() thực thi khi một Fragment đã được thêm vào một Activity và Fragment có thể được sử dụng trong ứng dụng.
  • onCreate() được gọi như là một phương thức khởi tạo cho các lớp FragmentonDestroy() tương đương với huỷ.
  • onCreateView() là phương thức mà trong đó bạn khởi tạo một Layout và các đối tượng View cho Fragment. onDestroyView() được gọi khi hệ thống phân cấp View kết hợp với Fragment được loại bỏ.
  • onStart()onStop() đóng vai trò tương tự như với vòng đời của Activity. Những phương thức này được kích hoạt khi Fragment trở nên hoặc không còn được nhìn thấy tương ứng.
  • onPause() onStart() cũng tương tự với các phương thức tương ứng của Activity. Khi một Fragment có thể được nhìn thấy, nhưng sự tập trung của nó đã thay đổi, thì một trong hai phương thức này được gọi.

Các lớp con của Fragment

Mặc dù lớp Fragment là lớp mạnh mẽ theo cách thức riêng của nó, nhưng nó không thể phát huy hết tiềm năng của nó mà không được mở rộng để phục vụ mục đích của ứng dụng. May mắn thay, Google đã cung cấp rất nhiều các lớp con khác nhau của Fragment để giúp các nhà phát triển nhanh chóng xây dựng các ứng dụng tuyệt vời.

Trong phần này, tôi muốn nêu bật một vài cái trong số chúng để truyền cảm hứng cho bạn xây dựng các lớp Fragment tuyệt vời của riêng bạn. Điều quan trọng cần phải biết được là các Fragment nào được xây dựng sẵn vì vậy bạn sẽ không lặp lại chúng.

ListFragment

Fragment này có tích hợp một ListView bên trong và một số phương thức trợ giúp để làm cho thành phần này nổi bật, chẳng hạn như một ProgressBar không xác định (một vòng tròn, quay liên tục) và TextView để hiển thị văn bản khi List rỗng.

MapFragment

Đây là một Fragment rất có giá trị, gói trong nó một MapView để sử dụng với các dịch vụ Google Maps. Thay vì phải tự mình viết tất cả các code, bạn có thể thừa kế Fragment này để thêm chức năng bản đồ cơ bản vào ứng dụng của bạn.

BrowseFragment và DetailsFragment

Cả hai Frament sẵn có này là một phần của Leanback Support Library Android cho TV và chúng xử lý giao diện người dùng và các chức năng cơ bản cho việc phát triển ứng dụng cho một thiết bị TV.

Tổng kết

Dù hướng dẫn này không đi sâu vào các lớp ActivityFragment hoạt động như thế nào, nhưng bây giờ bạn cũng đã biết rằng chúng là các thành phần quan trọng để xây dựng giao diện người dùng cho ứng dụng của bạn. Bạn đã được giới thiệu về vòng đời của các Activity và Fragment, và chúng ta đã xem xét một số lớp con tiện lợi của Fragment có thể giúp bạn xây dựng nên những ứng dụng tuyệt vời.

Khi bạn tiếp tục làm việc với Android, bạn sẽ thấy và được học về nhiều các lớp ActivityFragment khác nhau sẵn có cho bạn và bạn sẽ, không phải mất công, xây dựng của riêng bạn.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.