Kotlin Android Fragment, Activity, & Dialog Fragment

0
Dịch vụ dạy kèm gia sư lập trình
Bài này thuộc phần 2 của 5 phần trong series Kotlin Android cơ bản

Bài viết trước mình đã giới thiệu các gọi các API cơ bản trong android bằng Kotlin. Chúng ta sẽ tiếp nghiên cứu xem cách sử dụng Android Activity, Kotlin Android Fragment bằng Kotlin như thế nào nhé.

Cá nhân thì mình thấy cú pháp Kotlin khá là gọn. Nên nếu bạn đã quen với các ngôn ngữ kiểu script như Javascipt thì việc nhớ và hiểu Kotlin rất nhanh.

Android Fragment bằng Kotlin

Trong bài viết này, mình sẽ hướng dẫn các bạn các tạo Dialog fragment và fragment từ một Activity.

Kotlin Android cơ bản: Activity, Fragment & Dialog Fragment

Chuyển sang một Activity khác từ Activity sử dụng Intent

Về nguyên tắc thì để start một activity vẫn như cũ, không khác gì so với viết bằng Java. Có khác chăng chỉ là systax thui 🙂

val i = Intent(this, MainActivity::class.java)
startActivity(i)
finish()

Hiển thị một Dialog Fragment trên Activity

Đầu tiên, bạn tạo một dialog bằng kế thừa từ lớp DialogFragment.

class DialogFrag : DialogFragment() {
   private var text: TextView? = null
   private var array = ArrayList<String>()
   private var rv: RecyclerView? = null
   override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View {
       var view: View? = inflater?.inflate(R.layout.activity_main2, container, false)
       return view!!
   }
 
   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       setStyle(STYLE_NORMAL, R.style.AppTheme)
   }
}

Để hiển thị dialog, trong MainActivity bạn tạo một instance của class DialogFrag rồi gọi hàm show().

Ở ví dụ này thì dialog sẽ hiển thị khi người dùng click vào một button.

bt?.setOnClickListener() { 
    view -> DialogFrag().show(fragmentManager, "dialFrag") 
}

Chú thích:

  • Bạn có thấy đoạn code khó hiểu không? Nếu bạn đã quen với java thì càng khó hiểu. Đoạn code bắt sự kiện click của button sử dụng một khái niệm khá mới đó là lambda function. Chúng ta gọi hàm anonymous thay vì thông qua inner class giống như Java.
  • Hàm getters và setters không được sử dụng. Thay vào đó chúng ta sử dụng properties của class. Như ở ví dụ trên, thay vì gọi hàm getFragmentManager() thì chúng ta sử dụng fragmentManager.

>> Đọc thêm về xử lý sự kiện trong Android: Xử lý sự kiện trong Android (Event Listeners) bằng Kotlin

Mở một Kotlin Android Fragment từ Activity

Chúng ta tạo một layout cho fragment như sau:

<FrameLayout
   android:id="@+id/frame"
   android:layout_width="match_parent"
   android:layout_height="match_parent"/>

Tạo một fragment bằng cách kế thừa từ Fragment class.

class Fragment1 : Fragment() {
   override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
       val view: View? = inflater?.inflate(R.layout.activity_main2, container, false)
       return view
   }
}

Từ Activity, để gọi một fragment thì làm như sau:

fragmentManager.beginTransaction()?.replace(R.id.frame, Fragment1() as Fragment)?.addToBackStack("frag")?.commit()           //chaining

Chú thích: Bạn thấy cùng một dòng code trên sử dụng rất nhiều toán tử(?). Đây được gọi là chaining(chuỗi). Nếu bất từ toán tử (?) nào trả về NULL toàn bộ biểu thức sẽ trả về NULL. Đây có lẽ một nhược điểm của Kotlin.

Tạm kết

Như vậy, mình đã chia sẻ với các bạn cách gọi Dialog Fragment và Fragment từ Activity bằng Kotlin trong Android.

Qua đó, bạn cũng có thêm một kiến thức mới đó là lambda function.

Bài viết sau chúng ta sẽ tiếp tục tìm hiểu Kotlin trong Android khi làm việc với Adapter. Riêng với Adapter thì cách viết bằng Kotlin gần giống với Java, chỉ thay đổi đôi chút thôi.

Các bạn đón đọc nhé.

Xem tiếp các bài trong Series
Phần trước: Sử dụng những API cơ bản trong Android với KotlinPhần kế tiếp: Tìm hiểu Higher-Order Functions và Lambda trong Kotlin
Dịch vụ phát triển ứng dụng mobile giá rẻ - chất lượng
Bài trướcLàm thế nào để tăng lượng tải app sau mỗi lượt view
Bài tiếp theoClean Code Android: Bạn đã thật sự hiểu đúng chưa?
Tên đầy đủ là Dương Anh Sơn. Tốt nghiệp ĐH Bách Khoa Hà Nội. Mình bắt đầu nghiệp coder khi mà ra trường chẳng xin được việc đúng chuyên ngành. Mình tin rằng chỉ có chia sẻ kiến thức mới là cách học tập nhanh nhất. Các bạn góp ý bài viết của mình bằng cách comment bên dưới nhé !

Bình luận. Cùng nhau thảo luận nhé!

avatar
  Theo dõi bình luận  
Thông báo