Đối với tất cả các nhà phát triển Kotlin ngoài kia:
Dưới đây là giải pháp được đề xuất cho Android Studio để gửi dữ liệu tới Fragment của bạn (= khi bạn tạo một Đoạn trống với Tệp -> Mới -> Đoạn -> Đoạn (Trống) và bạn kiểm tra "bao gồm các phương thức nhà máy phân mảnh").
Đặt cái này vào Fragment của bạn:
class MyFragment: Fragment {
...
companion object {
@JvmStatic
fun newInstance(isMyBoolean: Boolean) = MyFragment().apply {
arguments = Bundle().apply {
putBoolean("REPLACE WITH A STRING CONSTANT", isMyBoolean)
}
}
}
}
.apply
là một mẹo hay để đặt dữ liệu khi một đối tượng được tạo hoặc khi chúng nêu ở đây :
Gọi hàm được chỉ định [khối] với this
giá trị là bộ thu và trả về this
giá trị.
Sau đó, trong Hoạt động hoặc Đoạn của bạn làm:
val fragment = MyFragment.newInstance(false)
... // transaction stuff happening here
và đọc các đối số trong đoạn của bạn, chẳng hạn như:
private var isMyBoolean = false
override fun onAttach(context: Context?) {
super.onAttach(context)
arguments?.getBoolean("REPLACE WITH A STRING CONSTANT")?.let {
isMyBoolean = it
}
}
Để "gửi" dữ liệu trở lại Hoạt động của bạn , chỉ cần xác định một chức năng trong Hoạt động của bạn và thực hiện các thao tác sau trong Đoạn của bạn:
(activity as? YourActivityClass)?.callYourFunctionLikeThis(date) // your function will not be called if your Activity is null or is a different Class
Tận hưởng sự kỳ diệu của Kotlin!