Tôi có một Activity
và sáu khác nhau Fragments
gắn liền với nó. Mỗi đoạn có giao diện và hoạt động OnFragmentInteractionListener
thực hiện tất cả các trình nghe này để nhận các cuộc gọi lại. Nó trông hơi lộn xộn, vì vậy tôi quan tâm là có một số mẫu/cách để đơn giản hóa điều này và làm cho thanh lịch hơn?Làm cách nào để xử lý nhiều trình lắng nghe tương tác phân đoạn trong một Hoạt động đúng cách?
Trả lời
Một giải pháp tốt có thể sử dụng SAME OnFragmentInteractionListener cho tất cả các phân đoạn và sử dụng một tham số của từng phương pháp nghe (như tham số TAG) để xác định phân đoạn nào đã gửi hành động.
đây một ví dụ:
Tạo một lớp mới và mỗi đoạn sử dụng lớp này
OnFragmentInteractionListener.java
public interface OnFragmentInteractionListener {
public void onFragmentMessage(String TAG, Object data);
}
Trong hoạt động của bạn:
public void onFragmentMessage(String TAG, Object data){
if (TAG.equals("TAGFragment1")){
//Do something with 'data' that comes from fragment1
}
else if (TAG.equals("TAGFragment2")){
//Do something with 'data' that comes from fragment2
}
...
}
Bạn có thể sử dụng Loại đối tượng để chuyển mọi loại dữ liệu mà bạn muốn (sau đó, bao giờ hết y nếu, bạn phải chuyển đổi Object để gõ đó là cần thiết).
Sử dụng cách này, việc bảo trì dễ dàng hơn 6 trình nghe khác nhau và phương pháp cho mọi loại dữ liệu bạn muốn chuyển.
Hy vọng điều này sẽ hữu ích.
nỗ lực của tôi cải thiện neonamu's answer:
Bạn có thể định nghĩa một giao diện giống như đã nêu ở trên, nhưng một chung một
public interface OnListFragmentInteractionListener<T> {
void onListFragmentInteraction(String tag, T data);
}
Sau đó, trong hoạt động máy chủ, bạn có thể thực hiện nó đặc biệt cho các loại hình mà bạn muốn, hoặc như được đề xuất ở trên cho Đối tượng:
public class MyFragActivity implements OnListFragmentInteractionListener<Object> {
...
@Override
public void onListFragmentInteraction(String tag, Object data) {
//do some stuff with the data
}
}
Bằng cách này khi bạn triển khai giao diện tùy thuộc vào nhu cầu của ứng dụng, có thể bạn có thể sử dụng lại giao diện này trong tình huống khác.
- 1. Làm thế nào để xử lý tương tác dự án C# - C++ đúng cách?
- 2. Sử dụng jquery ajax để gọi phương thức bean được quản lý jsf (một trình xử lý lắng nghe AjaxsjiorEvent)
- 3. Cách xử lý nhiều Mảnh cho một Hoạt động
- 4. Làm cách nào để `onViewStateRestored` từ Phân đoạn hoạt động?
- 5. Làm cách nào để gọi đúng một máy chủ từ nhiều trình xử lý/trình xử lý web bằng cách sử dụng Akka HTTP?
- 6. Trình lắng nghe chrome.webRequest.onAuthRequired
- 7. Có mẫu thiết kế Android để xử lý nhiều đoạn trong một hoạt động không?
- 8. Trình nghe Onlclick không hoạt động đúng ..?
- 9. Cách xử lý đúng cách xử lý các quy trình con
- 10. Thêm trình lắng nghe/xử lý kích thước lại thành VerticalPanel trong GWT
- 11. Các tương tác phân đoạn từng mảnh của Android
- 12. Nhấp vào trình lắng nghe jQuery không hoạt động
- 13. Làm cách nào để viết trình xử lý Ansible với nhiều tác vụ?
- 14. Làm cách nào để bật lại ngăn xếp cho Hoạt động với nhiều Phân đoạn?
- 15. Xử lý lỗi phân đoạn
- 16. Sử dụng nhiều phân đoạn trong một hoạt động
- 17. Đa xử lý Python: Làm cách nào để chia sẻ một dict giữa nhiều quy trình?
- 18. Cách thêm trình nghe hành động nghe nhiều nút
- 19. Nhiều Hoạt động hoặc Hoạt động Đơn lẻ và nhiều phân đoạn
- 20. Cách lắng nghe các nhánh mới trong hạt nhân
- 21. Tạo đúng một đoạn trong PopupWindow
- 22. Xử lý ngoại lệ Web đúng cách?
- 23. cách hiệu quả để xử lý các đoạn đường 2d
- 24. Cách xử lý đúng lỗi trong Express?
- 25. Làm cách nào để gửi dữ liệu từ một hoạt động đến phân đoạn gốc?
- 26. Trình quản lý phân đoạn Android không tương thích
- 27. Lắng nghe ACTION_SCREEN_OFF
- 28. Đặt trình xử lý hoạt ảnh thành Hoạt ảnh động
- 29. Tôi làm cách nào để sử dụng onCreateOptionsMenu trong một Phân đoạn trong một tab Hoạt động? (Sherlock ActionBar)
- 30. Tại sao trình lắng nghe phím tắt không hoạt động trong IE
Hoạt động như một sự quyến rũ. Cảm ơn rất nhiều! –
Tôi đã tự hỏi tại sao bạn sử dụng @Override và người dùng Neonamu thì không. Cả hai có làm việc không? – Burkely91
@ Burkely91 có nó sẽ làm việc mà không có nó.BUT Bạn nên sử dụng nó. chú thích ghi đè trong Java có nghĩa là kiểm tra/xác minh rằng bạn đang thực sự ghi đè bạn nghĩ bạn (nó sẽ báo cáo lỗi nếu bạn quên tham số chẳng hạn) mà không ghi đè bạn chỉ đơn giản là xác định phương thức mới với cùng một tên tham số khác nhau (thực hiện quá tải) và không triển khai giao diện – HenriqueMS