Hãy thử sử dụng các giao diện.
Bất kỳ phân đoạn nào sẽ chuyển dữ liệu trở lại hoạt động chứa nó nên khai báo một giao diện để xử lý và truyền dữ liệu. Sau đó, đảm bảo hoạt động chứa của bạn thực hiện các giao diện đó. Ví dụ:
JAVA
Trong đoạn của bạn, khai báo giao diện ...
public interface OnDataPass {
public void onDataPass(String data);
}
Sau đó, kết nối việc triển khai giao diện của lớp chứa với đoạn trong phương thức onAttach, như vậy:
OnDataPass dataPasser;
@Override
public void onAttach(Context context) {
super.onAttach(context);
dataPasser = (OnDataPass) context;
}
Trong phần của bạn, khi bạn cần xử lý việc truyền dữ liệu, chỉ cần gọi nó trên đối tượng dataPasser:
public void passData(String data) {
dataPasser.onDataPass(data);
}
Cuối cùng, trong hoạt động chứa của bạn thực hiện OnDataPass
...
@Override
public void onDataPass(String data) {
Log.d("LOG","hello " + data);
}
KOTLINE
Bước 1. Tạo giao diện
interface OnDataPass {
fun onDataPass(data: String)
}
Bước 2. Sau đó, kết nối việc triển khai giao diện của lớp chứa với đoạn trong phương thức onAttach (YourFragment), như vậy:
lateinit var dataPasser: OnDataPass
override fun onAttach(context: Context) {
super.onAttach(context)
dataPasser = context as OnDataPass
}
Bước 3. Trong đoạn của bạn, khi bạn cần xử lý việc truyền dữ liệu, chỉ cần gọi nó trên đối tượng dataPasser:
fun passData(data: String){
dataPasser.onDataPass(data)
}
Bước 4. Cuối cùng, trong hoạt động của bạn thực hiện OnDataPass
class MyActivity : AppCompatActivity(), OnDataPass {}
override fun onDataPass(data: String) {
Log.d("LOG","hello " + data)
}