Lớp học lập trình này nằm trong khóa học về Khái niệm cơ bản về Android Kotlin. Bạn sẽ nhận được nhiều giá trị nhất từ khóa học này nếu bạn làm việc qua các lớp học lập trình theo trình tự. Tất cả các lớp học lập trình trong khóa học đều có trên trang đích của các lớp học lập trình cơ bản về Android Kotlin.
Trong lớp học lập trình này, bạn tìm hiểu về các mảnh và bạn tạo một mảnh bên trong một ứng dụng khởi động có tên là AndroidTrivia. Trong lớp học lập trình tiếp theo, bạn tìm hiểu thêm về cách di chuyển và làm việc bổ sung trên ứng dụng AndroidTrivia.
Kiến thức bạn cần có
- Kiến thức cơ bản về Kotlin
- Cách tạo các ứng dụng Android cơ bản trong Kotlin
- Cách làm việc với bố cục
Kiến thức bạn sẽ học được
- Cách thêm tĩnh mảnh vào ứng dụng
Bạn sẽ thực hiện
- Tạo một mảnh trong một hoạt động.
Trong ba lớp học lập trình tạo nên bài học này, bạn sử dụng một ứng dụng có tên là AndroidTrivia. Ứng dụng đã hoàn thành là một trò chơi trong đó người dùng trả lời 3 câu hỏi kiến thức về mã hóa Android. Nếu người dùng trả lời đúng cả ba câu hỏi, họ sẽ thắng trò chơi và có thể chia sẻ kết quả của mình.
Ứng dụng AndroidTrivia minh họa các mẫu điều khiển và chức năng điều khiển. Ứng dụng có một số thành phần:
- Trong màn hình tiêu đề, hiển thị ở bên trái trong ảnh chụp màn hình ở trên, người dùng sẽ bắt đầu trò chơi.
- Trong màn hình của trò chơi có câu hỏi, phía trên, người dùng sẽ chơi trò chơi và gửi câu trả lời.
- Ngăn điều hướng (hiển thị ở bên phải) sẽ trượt từ bên cạnh ứng dụng ra và chứa một trình đơn có tiêu đề. Biểu tượng ngăn
sẽ mở ngăn điều hướng. Trình đơn ngăn điều hướng chứa một đường liên kết đến trang Giới thiệu và một đường liên kết đến các quy tắc của trò chơi.
Ở đầu ứng dụng, bạn có thể xem một chế độ xem màu có tên là thanh ứng dụng, còn gọi là thanh hành động.
Trong lớp học lập trình này, bạn làm việc với một ứng dụng mới làm quen, ứng dụng này cung cấp các mã mẫu và lớp mảnh mà bạn cần khi hoàn thành ứng dụng Trivia.
- Tải dự án AndroidTrivia-Starter Android Studio xuống.
- Mở dự án trong Android Studio và chạy ứng dụng. Khi ứng dụng mở ra, ứng dụng sẽ không làm gì ngoài việc hiển thị tên ứng dụng và màn hình trống.
- Trong ngăn Dự án Android Studio, hãy mở Chế độ xem dự án: Android để khám phá các tệp dự án. Mở thư mục app > java để xem các lớp
MainActivity
và mảnh. - Mở thư mục res > layout rồi nhấp đúp vào activity_main.xml. Tệp
activity_main.xml
xuất hiện trong Layout Editor. - Nhấp vào thẻ Thiết kế. Cây thành phần cho tệp
activity_main.xml
hiển thị bố cục gốc dưới dạng ngành dọcLinearLayout
.
Trong bố cục tuyến tính dọc, tất cả chế độ xem con trong bố cục đều được căn chỉnh theo chiều dọc.
Mảnh thể hiện một hành vi hoặc một phần giao diện người dùng (UI) trong một hoạt động. Bạn có thể kết hợp nhiều mảnh trong một hoạt động để xây dựng giao diện người dùng nhiều ngăn và bạn có thể sử dụng lại một mảnh trong nhiều hoạt động.
Hãy coi mảnh là phần mô-đun của một hoạt động, chẳng hạn như & hoạt động; một phần của hoạt động; mà bạn cũng có thể sử dụng trong các hoạt động khác:
- Mỗi mảnh (fragment) có vòng đời (lifecycle) riêng và nhận các sự kiện đầu vào riêng.
- Bạn có thể thêm hoặc xoá mảnh trong khi hoạt động đang chạy.
- Mỗi mảnh được xác định trong một lớp (class) Kotlin.
- Giao diện người dùng của một mảnh được xác định trong một tệp bố cục XML.
Ứng dụng AndroidTrivia có một hoạt động chính và một số mảnh. Hầu hết các mảnh và tệp bố cục của những mảnh đó đã được xác định cho bạn. Trong nhiệm vụ này, bạn tạo một mảnh và thêm mảnh vào hoạt động chính của ứng dụng.
Bước 1: Thêm một lớp mảnh
Trong bước này, bạn tạo một lớp TitleFragment
trống. Hãy bắt đầu bằng cách tạo một lớp Kotlin cho một mảnh mới:
- Trong Android Studio, hãy nhấp vào vị trí bất kỳ trong ngăn Dự án để đưa tiêu điểm quay lại tệp dự án. Ví dụ: nhấp vào thư mục com.example.android.navigation.
- Chọn File > New > Fragment > Fragment (blank).
- Đối với tên mảnh, hãy sử dụng TitleFragment. Xóa tất cả các hộp đánh dấu, bao gồm tạo Bố cục XML, bao gồm phương thức gốc của mảnh và bao gồm lệnh gọi lại giao diện.
- Nhấp vào Finish (Hoàn tất).
- Mở tệp mảnh
TitleFragment.kt
nếu tệp chưa được mở. Lớp này chứa phương thứconCreateView()
, là một trong các phương thức được gọi trong vòng đời của mảnh. - Trong
onCreateView()
, hãy xóa phầnreturn TextView(activity).apply
, bao gồm cả dòng bắt đầu bằngsetText
. HàmonCreateView()
chỉ còn lại mã sau:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
}
Tạo đối tượng liên kết
Mảnh sẽ không biên dịch ngay bây giờ. Để biên dịch mảnh, bạn cần tạo một đối tượng liên kết và tăng cường chế độ xem của mảnh (tương đương với việc sử dụng setContentView()
cho một hoạt động).
- Trong phương thức
onCreateView()
trongTitleFragment.kt
, hãy tạo một biếnbinding
(val binding
). - Để tăng cường chế độ xem của mảnh, hãy gọi phương thức
DataBindingUtil.inflate()
trên đối tượngBinding
của mảnh, đó làFragmentTitleBinding
.
Chuyển 4 thông số vào phương thức:
inflater
, chính làLayoutInflater
dùng để tăng cường bố cục liên kết.- Tài nguyên bố cục XML để tăng cường bố cục. Sử dụng một trong các bố cục đã được xác định cho bạn,
R.layout.fragment_title
. container
cho cha mẹViewGroup
. (Thông số này là không bắt buộc.)false
cho giá trịattachToParent
.
- Chỉ định liên kết mà
DataBindingUtil.inflate
trả về cho biếnbinding
. - Trả về
binding.root
từ phương thức chứa chế độ xem tăng cường. Phương thứconCreateView()
của bạn hiện trông giống như mã sau:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val binding = DataBindingUtil.inflate<FragmentTitleBinding>(inflater,
R.layout.fragment_title,container,false)
return binding.root
}
Bước 2: Thêm mảnh mới vào tệp bố cục chính
Trong bước này, bạn thêm TitleFragment
vào tệp bố cục activity_main.xml
của ứng dụng.
- Mở res > layout > activity_main.xml rồi nhấp vào thẻ Text (Văn bản) để xem mã XML của bố cục.
- Trong phần tử
LinearLayout
hiện có, hãy thêm một phần tửfragment
. - Đặt mã của mảnh thành
titleFragment
. - Đặt tên của mảnh thành đường dẫn đầy đủ của lớp mảnh, trong trường hợp này là
com.example.android.navigation.TitleFragment
. - Đặt chiều rộng và chiều cao của bố cục thành
match_parent
.
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/titleFragment"
android:name="com.example.android.navigation.TitleFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
</layout>
- Chạy ứng dụng. Mảnh đã được thêm vào màn hình chính của bạn.
Dự án Android Studio: AndroidTriviaFragment
Trong lớp học lập trình này, bạn đã thêm một mảnh vào ứng dụng AndroidTrivia mà bạn sẽ tiếp tục làm việc trong hai lớp học lập trình tiếp theo trong bài học này.
- Mảnh là một phần mô-đun của một hoạt động.
- Mỗi mảnh (fragment) có vòng đời (lifecycle) riêng và nhận các sự kiện đầu vào riêng.
- Dùng thẻ
<fragment>
để xác định bố cục cho mảnh trong tệp bố cục XML. - Tăng cường bố cục cho một mảnh trong
onCreateView()
. - Bạn có thể thêm hoặc xoá mảnh trong khi hoạt động đang chạy.
Khóa học từ Udacity:
Tài liệu dành cho nhà phát triển Android:
Phần này liệt kê các bài tập về nhà có thể được giao cho học viên đang làm việc qua lớp học lập trình này trong khóa học do người hướng dẫn tổ chức. Người hướng dẫn có thể làm những việc sau:
- Giao bài tập về nhà nếu được yêu cầu.
- Trao đổi với học viên cách nộp bài tập về nhà.
- Chấm điểm bài tập về nhà.
Người hướng dẫn có thể sử dụng những đề xuất này ít hay nhiều tùy ý. Do đó, họ có thể thoải mái giao bất kỳ bài tập về nhà nào khác mà họ cảm thấy phù hợp.
Nếu bạn đang tự mình làm việc qua lớp học lập trình này, hãy thoải mái sử dụng các bài tập về nhà này để kiểm tra kiến thức của bạn.
Trả lời những câu hỏi này
Câu hỏi 1
Một số điểm khác biệt giữa các mảnh và hoạt động là gì? Chọn tất cả câu đúng.
- Khi tạo một mảnh, bạn sẽ tăng cường bố cục trong phương thức
onCreateView()
. Khi tạo một hoạt động, bạn sẽ tăng cường bố cục trongonCreate()
. - Một hoạt động có bố cục riêng, nhưng mảnh không được có bố cục riêng.
- Một hoạt động có vòng đời riêng, nhưng một mảnh không hoạt động được.
- Khi tăng cường bố cục cho một mảnh hoặc một hoạt động, bạn có thể tham chiếu đến bố cục dưới dạng
R.layout.
layoutname
.
Câu hỏi 2
Câu nào sau đây là đúng về các mảnh? Hãy chọn mọi câu phù hợp.
- Bạn có thể sử dụng một mảnh trong nhiều hoạt động.
- Một hoạt động có thể có nhiều mảnh.
- Sau khi bạn xác định một mảnh trong lớp Kotlin, mảnh đó sẽ tự động được thêm vào tệp bố cục
activity_main.xml
. - Dùng thẻ
<fragment>
để xác định vị trí trong tệp bố cục sẽ chèn một mảnh.
Bắt đầu bài học tiếp theo:
Để biết đường liên kết đến các lớp học lập trình khác trong khóa học này, hãy xem trang đích của các lớp học lập trình cơ bản về Android Kotlin.