Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android Studio
Code

Viết các ứng dụng Android bằng Kotlin: Bước đầu làm quen

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Coding Android Apps in Kotlin.
Java vs. Kotlin: Should You Be Using Kotlin for Android Development?
Coding Functional Android Apps in Kotlin: Lambdas, Null Safety & More

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

Mặc dù đại đa số các ứng dụng Android được viết bằng Java, nhưng không có luật nào bắt buộc bạn phải sử dụng Java cho phát triển Android. Có một loạt các ngôn ngữ lập trình hiện đại được thiết kế để chạy trên máy ảo Java (JVM), và một trong những ngôn ngữ này đang trở nên phổ biến trong cộng đồng Java đó là Kotlin.

Trong phần đầu tiên của loạt bài gồm ba phần này, chúng ta đã tìm hiểu Kotlin là gì và những gì nó cung cấp cho các nhà phát triển Android:

  • Nó 100% có thể hoán đổi với Java, đối với nơi mà bạn có thể tiếp tục sử dụng các thư viện sẵn có và các framework của Java, và thậm chí có thể sử dụng kết hợp Java và Kotlin trong dự án Android của bạn.
  • Cú pháp của nó được thiết kế để giống với Java, có nghĩa là nó sẽ khá dễ dàng cho các nhà phát triển Java để hiểu nguyên tắc cơ bản của Kotlin.
  • Nó kết hợp các tính năng và các khái niệm từ lập trình thủ tục và hàm.
  • Nó cũng được hỗ trợ tốt bởi Android Studio.

Trong hướng dẫn này, chúng ta bắt đầu với một số phát triển Kotlin thực tế. Phần cuối cuối của hướng dẫn, bạn sẽ tạo ra một ứng dụng Android đơn giản sẽ hiển thị một dòng văn bản—và được viết hoàn toàn bằng Kotlin. Bạn cũng sẽ biết cách để khỏi phải viết findViewById nữa, bằng cách sử dụng các extension Android của Kotlin.

Nhưng trước tiên, chúng ta cần thiết lập môi trường phát triển để nó có thể nói một ngôn ngữ mới!

Cài đặt Plugin Kotlin trong Android Studio

Điều đầu tiên bạn cần làm là thêm hỗ trợ Kotlin cho bản cài đặt Android Studio của bạn.

Trước khi chúng ta bắt đầu, hãy chắc chắn rằng bạn đang chạy phiên bản mới nhất, phiên bản ổn định của Android Studio, vì bạn có thể gặp vấn đề với plugin Kotlin trên các phiên bản thử nghiệm của Android Studio. Cũng cần mở SDK Manager và kiểm tra xem bản có cập nhật cho bất kỳ gói nào bạn đã cài đặt hay không.

Khi bạn tự tin rằng môi trường phát triển của bạn đã được cập nhật, thì bạn đã sẵn sàng để cài đặt plugin Kotlin. Khởi động Android Studio và bạn sẽ thấy cửa sổ Welcome to Android Studio—nếu cửa sổ này không xuất hiện, thì đóng Android Studio hoàn toàn và chạy lại nó.

Nhấp vào biểu tượng Configure, và sau đó chọn Plugins từ trình đơn thả xuống tiếp theo.

Open Android Studios Configure Plugins menu

Nhấp vào nút Install JetBrains plugins...

Install the Kotlin for Android Studio plugin

Chọn Kotlin từ trình đơn, và sau đó nhấp vào nút Install màu xanh lá cây. Bạn sẽ cần phải khởi động lại IDE của bạn trước khi plugin Kotlin được kích hoạt, do đó, hoặc nhấp vào nút Restart Android Studio hoặc khởi động lại IDE của bạn theo cách thủ công.

Cấu hình dự án của bạn để sử dụng Kotlin

Tại thời điểm này, IDE của bạn có thể hiểu và chạy code Kotlin, nhưng bạn vẫn sẽ cần phải cấu hình Kotlin mỗi khi bạn muốn sử dụng nó trong một dự án mới. Hãy tạo một dự án mới và cấu hình dự án sử dụng Kotlin ngay bây giờ. Tạo một dự án mới với các cài đặt của bạn, nhưng để đơn giản, chọn Empty Activity khi được nhắc.

Nhờ plugin Kotlin, cấu hình một dự án sử dụng Kotlin không thể đơn giản: chỉ cần chọn Tools từ thanh công cụ Android Studio, tiếp theo là KotlinConfigure Kotlin in Project.

Select Android Studios Tools Kotlin Configure Kotlin in Project option

Điều này sẽ mở một popup nơi bạn có thể chọn cấu hình Kotlin cho:

  • tất cả các mô-đun
  • tất cả các mô-đun có chứa các tập tin Kotlin
  • hoặc một mô-đun đơn nhất, được đặt tên

Bởi vì tôi sẽ chỉ sử dụng code Kotlin trong dự án của tôi, nên tôi đã lựa chọn All modules. Bạn cũng có thể lựa chọn phiên bản Kotlin mà bạn muốn sử dụng—thông thường, đây sẽ là phiên bản mới nhất.

Ngoài ra, bạn có thể cấu hình Kotlin bằng cách chọn Help từ thanh menu của Android Studio, sau đó là tìm đến Find Action… Trong thanh Find Action, gõ Configure Kotlin in Project, và sau đó chọn tùy chọn này khi nó xuất hiện.

Tuỳ chọn Configure Kotlin in Project tạo ra một số tinh chỉnh cho các tập tin build.gradle của dự án, vì vậy, hãy tìm hiểu kỹ hơn về những thay đổi trong những tập tin này. Mở tập tin build.gradle ở cấp độ project—nó sẽ trông giống như thế này:

Bây giờ, chúng ta hãy xem build.gradle ở cấp độ mô-đun:

Cuối cùng, đồng bộ các thay đổi bằng cách nhấp vào Sync Now từ popup xuất hiện hoặc bằng cách nhấn vào biểu tượng Sync Project with Gradle Files trong thanh công cụ của Android Studio.

Chuyển đổi tập tin Java thành Kotlin

Một tính năng của plugin Kotlin đặc biệt hữu ích cho người mới đến với Kotlin đó là khả năng chuyển đổi bất kỳ tập tin mã nguồn Java nào thành Kotlin, trong khi duy vẫn trì khả năng tương thích đầy đủ khi chạy runtime.

Biết chính xác cách làm thế nào để bất kỳ tập tin trong Java sẽ được dịch thành Kotlin là điều lý tưởng để giúp bạn tìm hiểu ngôn ngữ, nhưng nó còn có thể có ích trong suốt hành trình với Kotlin của bạn—nếu bạn đã bao giờ gặp khó khăn khi viết một cái gì đó trong Kotlin, bạn có thể luôn luôn viết bằng Java và sau đó sử dụng tính năng này để chuyển đổi mã đó thành Kotlin.

Hãy chuyển đổi tập tin MainActivity của dự án thành một tập tin nguồn Kotlin. Có hai cách để gọi action Convert Java File to Kotlin File của plugin Kotlin, một trong hai cách đó là:

  • Chọn tập tin MainActivity của bạn, và sau đó chọn Code từ thanh menu của Android Studio, tiếp theo chọn Convert Java File to Kotlin File.

Convert your existing Java file into a Kotlin file by selecting Code Convert Java File to Kotlin File
  • Hoặc chọn Help từ thanh menu của Android Studio, sau đó là Find Action. Trong popup tiếp theo, gõ Convert Java file to Kotlin file và sau đó chọn tùy chọn này khi nó xuất hiện. Lưu ý, bạn cũng có thể khởi động popup Find Action với một phím tắt: nếu bạn đang trên một máy Mac, nhấn Command-Shift-A, và nếu bạn đang trên Windows hoặc Linux, thì nhấn Control-Shift-A.

Chỉ cần lưu ý rằng, tùy thuộc vào sự phức tạp của code mà bạn viết, việc chuyển đổi có thể không phải lúc nào cũng chính xác 100%, do đó, bạn nên luôn luôn kiểm tra lỗi cho code của bạn sau khi đã được chuyển đổi.

MainActivity vừa được chuyển đổi của bạn sẽ giống như thế này:

Bạn cũng sẽ nhận thấy rằng phần mở rộng của tập tin đã thay đổi, chuyển đổi từ MainActivity.java sang MainActivity.kt.

Đây có thể là một Activity đơn giản, nhưng những dòng này minh họa một số đặc điểm chính của cú pháp Kotlin. Vì đây là cái nhìn đầu tiên của chúng ta về một số code Kotlin thực tế, hãy tìm hiểu từng dòng code trong lớp này.

Hiểu cú pháp của Kotlin

Trong Kotlin, bạn khai báo các lớp bằng cách sử dụng từ khoá class giống hệt trong Java. Tuy nhiên, trong Kotlin, các lớp (và phương thức) mặc định là public và final, vì vậy bạn có thể tạo ra một lớp đơn giản chỉ bằng cách viết class MainActivity.

Khi nói đến việc thừa kế một lớp, bạn thay thế extends của Java bằng một dấu hai chấm, và sau đó đính kèm tên của lớp cha. Vì vậy, trong dòng đầu tiên của tập tin MainActivity.kt, chúng ta đang tạo ra một lớp public, final được gọi là MainActivity thừa kế AppCompatActivity:

Tương tự với Java sẽ là:

Nếu bạn muốn override một lớp hoặc phương thức, thì bạn sẽ cần phải khai báo rõ ràng nó là open hay abstract.

Trong Kotlin, hàm được định nghĩa bằng cách sử dụng từ khóa fun, theo sau là tên hàm và tham số trong ngoặc đơn. Trong Kotlin, tên hàm ở phía trước kiểu của nó:

Điều này ngược lại với Java, trong đó kiểu ở trước tên:

Lưu ý rằng chúng ta đã không chỉ định phương thức này là final, vì trong Kotlin tất cả các phương thức mặc định là final.

Phần còn lại của Acivity này trông khá giống với Java. Tuy nhiên, vài dòng này minh họa một đặc trưng quan trọng khác của Kotlin:

Ở Kotlin, bạn không cần phải hoàn tất dòng code của bạn bằng dấu chấm phẩy, vì thế không có dấu chấm phẩy trong đoạn code ở trên. Bạn có thể thêm dấu chấm phẩy, nếu bạn thực sự muốn, nhưng cde của bạn sẽ rõ ràng hơn và dễ dàng hơn để đọc khi không có chúng.

Bây giờ thì chúng ta đã giải mã tập tin MainActivity.kt của chúng ta, hãy di chuyển nó đến nơi thích hợp của nó. Vì plugin Kotlin gặp trục trặc khi thêm một khai báo src/main/kotlin vào tập tin build.gradle, nên chúng ta hãy tạo ra thư mục này. Bước này là không bắt buộc, nhưng giữ tập tin Kotlin của bạn trong một thư mục dành riêng sẽ làm cho dự án gọn gàng hơn nhiều.

Ở trong thanh Explorer Project của Android Studio, giữ Control và nhấp vào thư mục Main của dự án và chọn New từ menu xuất hiện, sau đó chọn Directory. Đặt tên thư mục này là kotlin và sau đó nhấp vào OK.

Create a dedicated Kotlin directory

Nếu bạn đang khó khăn để tìm thư mục main của dự án, thì hãy mở menu thả xuống nhỏ ở góc trên bên trái của Explorer Project và chọn Project. Bây giờ bạn sẽ không còn gặp vấn đề về tìm kiếm thư mục src/main.

Open Android Studios Project Explorer menu and select Project

Một khi bạn đã tạo thư mục Kotlin riêng, hãy kéo tập tin MainActivity.kt của bạn vào đó. Chỉ cần đảm bảo giữ lại tên gói hiện có của tập tin MainActivity.kt để cho dự án của bạn vẫn có thể chạy.

Ngoài ra, nếu bạn dự định sử dụng Kotlin trong dự án này, thì bạn có thể cần xoá thư mục Java, thay vì làm lộn xộn dự án của bạn bằng các thư mục rỗng và không cần thiết.

Vì Kotlin biên dịch thành bytecode, một ứng dụng đã viết trong Kotlin giống hoàn toàn một ứng dụng được viết bằng Java, vì vậy hãy thử cài đặt ứng dụng này trên điện thoại Android hoặc AVD tương thích—bạn sẽ thấy không có gì thay đổi cả.

Tạo các tập tin Kotlin phụ

Nếu bạn tiếp tục làm việc với Kotlin trong dự án của bạn, thì sớm hay muộn bạn sẽ cần bắt đầu tạo mới các tập tin Kotlin chứ không phải chỉ đơn giản là chuyển đổi tập tin Java hiện có.

Để tạo một tập tin Kotlin, giữ Control và nhấp vào thư mục app/src/main/kotlin và chọn New > Kotlin Activity.

Create a new Kotlin Activity by selecting your Kotlin directory and clicking New Kotlin Activity

Đặt một cái tên cho lớp của bạn và chọn class từ menu thả xuống. Lớp mới của bạn sẽ trông giống như thế này:

Tại thời điểm này, Activity của bạn đang rỗng. Tiếp theo bạn có thể bắt đầu thêm một số chức năng thực sự, bạn sẽ cần để hoàn thành một vài bước. Thứ nhất, thêm khai báo import những gì mà bạn muốn sử dụng. Sự khác biệt duy nhất giữa khai báo import trong Kotlin và trong Java là bạn không cần phải hoàn tất mỗi dòng với dấu chấm phẩy. Ví dụ:

Sau đó, bạn sẽ cần phải chỉ định lớp mà bạn đang thừa kế, sử dụng cùng một định dạng mà chúng ta đã thấy trong tập tin MainActivity.kt của chúng ta:

Tiếp theo, bạn cần override phương thức onCreate của Activity:

Bây giờ bạn có thể thêm bất kỳ chức năng nào mà bạn muốn vào Activity này (và trong phần tiếp theo, tôi sẽ chỉ cho bạn cách sử dụng các tiện ích mở rộng Kotlin để thao tác widget UI, vì vậy, đây có thể là một nơi tốt để bắt đầu), nhưng một thiết lập nho nhỏ cuối cùng mà bạn cần là khai báo Kotlin Activity của bạn trong Manifest. Điều này giống hoàn toàn với khai báo trong một Activity Java mới, ví dụ:

Extension Kotlin cho Android: Nói tạm biệt với findViewById

Bây giờ thì chúng ta đã nắm rõ các khái niệm cơ bản, chúng ta hãy tìm hiểu sâu hơn về Kotlin thực sự có khả năng làm được những gì—bắt đầu với một tính năng mà thực sự có thể cắt giảm số lượng code bạn cần phải viết.

Trong Android, mỗi khi bạn muốn làm việc với bất kỳ View nào trong một Activity, bạn cần phải sử dụng phương thức findViewById để có được một tham chiếu đến View đó. Điều này làm cho findViewById trở thành một trong những thứ quan trọng nhất, nhưng cũng là một chút gì đó bực bội nhất là khi bạn sẽ thấy mình phải viết đi viết lại trong dự án Android của bạn. Phương thức findViewById chứa nhiều lỗi tiềm tàng, và nếu bạn đang làm việc với nhiều thành phần UI trong cùng một Activity, thì tất cả những findViewById có thể thực sự làm xáo xộn code của bạn, làm cho nó khó khăn để đọc.

Mặc dù có một số thư viện, như Butter Knife, nhằm loại bỏ findViewById, nhưng các thư viện này vẫn còn yêu cầu bạn phải chú thích các trường cho mỗi View, mà có thể dẫn đến những sai sót và vẫn cảm thấy như cần rất nhiều công sức.

Các extension cho Kotlin trong Android (mà gần đây đã được tích hợp vào plugin Kotlin tiêu chuẩn) hứa hẹn sẽ biến findViewById thành quá khứ, cung cấp cho bạn những lợi ích của các thư viện nói trên mà không có nhược điểm là phải viết bất kỳ code bổ sung hoặc mất thời gian để chạy runtime.

Bạn có thể sử dụng các extension Kotlin để nhập các tham chiếu View vào tập tin mã nguồn của bạn. Tại thời điểm này plugin Kotlin sẽ tạo ra một bộ "các thuộc tính tổng hợp" cho phép bạn làm việc với những View này như chúng là một phần của Activity của bạn—chủ yếu, điều này có nghĩa là bạn không còn sử dụng findViewById để xác định vị trí mỗi View trước khi bạn có thể làm việc với nó.

Để sử dụng các extension, bạn sẽ cần phải kích hoạt plugin Kotlin Android Extensions trong mỗi mô-đun, vì vậy hãy mở tập tin build.gradle nằm ở cấp mô-đun của bạn và thêm những thứ sau đây:

Đồng bộ các thay đổi này bằng cách nhấp vào popup Sync Now.

Sau đó, bạn có thể nhập các tham chiếu đến một View, bằng cách sử dụng định dạng sau:

Ví dụ, nếu tập tin acitivity_main.xml của bạn chứa một TextView với ID textView1, thì bạn cần nhập tham chiếu đến View bằng cách thêm những thứ sau đây vào Activity của bạn:

Sau đó, bạn sẽ có thể truy xuất textView1 bên trong activity này bằng cách sử dụng ID của nó—và không cần quan tâm đến findViewById!

Chúng ta hãy tìm hiểu các extension bằng ví dụ, bằng cách thêm một TextView vào tập tin activity_main.xml của chúng ta, nhập nó vào tập tin MainActivity.kt, và bằng cách sử dụng các extension để thiết lập văn bản cho TextView.

Bắt đầu bằng cách tạo ra TextView của bạn:

Sau đó bạn có thể nhập TextView vào MainActivity.kt, và thiết lập văn bản của nó bằng cách chỉ sử dụng ID của nó:

Lưu ý, nếu bạn muốn làm việc với nhiều widget từ cùng một layout, thì bạn có thể nhập toàn bộ nội dung của tập tin layout một lần, bằng cách sử dụng công thức sau:

Ví dụ, nếu bạn muốn nhập tất cả các widget từ tập tin activity_main.xml của bạn, thì bạn sẽ thêm những thứ sau đây vào Activity của bạn:

Kết luận

Trong phần thứ hai, chúng ta đã khái quát về việc thiết lập môi trường phát triển của bạn để hỗ trợ Kotlin và tìm hiểu cách dễ dàng để chuyển đổi code Java hiện tại của bạn thành Kotlin. Chúng ta cũng đã tìm hiểu một số đặc điểm chính của cú pháp Kotlin, và giới thiệu các Extension của Kotlin cho Android vào dự án của chúng ta.

Trong phần thứ ba và là phần cuối cùng, chúng ta sẽ xem xét một số tính năng nâng cao của ngôn ngữ Kotlin, là một nhà phát triển Android, bạn sẽ thấy nó đặc biệt hữu ích.

Advertisement
Advertisement
Advertisement
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.