Gần đây tôi đã làm việc rất nhiều với các mảnh vỡ và tôi chỉ tò mò về cách thực hành tốt nhất là sử dụng tham chiếu đến hoạt động của một phần của đoạn. Nó sẽ được tốt hơn để tiếp tục gọi getActivity() hoặc có một biến parentActivity được khởi tạo trên callback onActivityCreated.Phương pháp hay nhất để tham chiếu hoạt động gốc của một đoạn?
12
A
Trả lời
17
Điều này thực sự được bao gồm trong tài liệu Android chính thức trên Phân đoạn. Khi bạn cần bối cảnh của hoạt động gốc (ví dụ: Bánh mì nướng, Hộp thoại), bạn sẽ gọi số getActivity()
. Khi bạn cần gọi các phương thức gọi lại trong giao diện của Fragment, bạn nên sử dụng một biến gọi lại được khởi tạo trong onAttach(...)
.
public static class FragmentA extends ListFragment {
ExampleFragmentCallbackInterface mListener;
...
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mListener = (ExampleFragmentCallbackInterface) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement ExampleFragmentCallbackInterface ");
}
}
...
}
8
getActivity() là tốt nhất. Bạn không cần phải duy trì một biến để lưu trữ (luôn luôn, đến chu kỳ ứng dụng!). Nếu cần gọi phương thức và sử dụng! :)
-2
Nếu bạn đang ở trong mảnh, bạn có thể gọi getActivity(); Hoặc nếu bạn đang ở trong phân đoạn, bạn cũng có thể gọi getApplicationContext(). GetContext(); Hầu hết thời gian, getActivity() thực hiện tất cả những gì bạn cần.
Các vấn đề liên quan
- 1. Gọi phương thức Phân đoạn từ hoạt động gốc
- 2. Asynctask trong Hoạt động phân đoạn hoặc hoạt động gốc?
- 3. jQuery - Phương pháp hay nhất để tạo các đoạn HTML phức tạp
- 4. Các phương pháp hay nhất cho trang gốc của API REST là gì?
- 5. Tìm Tham chiếu đến Lớp & Phương pháp
- 6. Các phương pháp hay nhất để tương thích ngược API
- 7. Phương pháp hay nhất để tham số hóa ứng dụng GWT?
- 8. Các phương pháp hay nhất về Javascript
- 9. Các phương pháp hay nhất về iFrame
- 10. Một số phương pháp hay nhất để tự động thêm javascript vào trang asp.net là gì?
- 11. lấy tham chiếu của Hoạt động từ Dịch vụ
- 12. Liệu String.intern() thay đổi tham chiếu của gốc Chuỗi JDK7
- 13. Các phương pháp hay nhất để ký hợp đồng .NET?
- 14. Chuỗi Python để liệt kê các phương pháp hay nhất
- 15. Ngôn ngữ D: khởi tạo các phương pháp hay nhất về mảng đa chiều động?
- 16. Các phương pháp hay nhất để lưu trữ một trang web ASP.NET trong Subversion?
- 17. Tham chiếu đến System.data.entity.design.dll không hoạt động
- 18. Các phương pháp hay nhất cho pubnub trên android
- 19. Các phương pháp hay nhất của Team City để triển khai nhiều tầng là gì?
- 20. Các phương pháp hay nhất về Webrequest Webrequest
- 21. Phương pháp hay nhất để tạo truy vấn động, được đánh máy JPA?
- 22. Công cụ và các phương pháp hay nhất để hiểu mã của người khác
- 23. Các phương pháp hay nhất để tự động lưu bản nháp?
- 24. Chỉ mục MySQL - các phương pháp hay nhất là gì?
- 25. Cú pháp để tham chiếu một phương thức trả về một biểu thức cho phương thức khác?
- 26. Một số phương pháp hay nhất của Thư viện chuẩn C++ là gì?
- 27. Phương pháp kế thừa được trả về kiểu tham chiếu
- 28. Kích thước hình ảnh Các phương pháp hay nhất cho ứng dụng di động
- 29. quá tải của Math.sqrt: phương pháp quá tải dường như để che giấu bản gốc một
- 30. Danh sách SharePoint Các phương pháp hay nhất
Sử dụng FragmentCallbackInterface là cách ưa thích của tôi để thực hiện việc này. –
@James: Bạn có thể giải thích tại sao phương pháp này tốt hơn sử dụng getActivity() không? Đôi khi getActivity() trả về null và ứng dụng gặp sự cố. Bằng cách sử dụng phương pháp trên, bạn có thể chắc chắn rằng ứng dụng sẽ không bị lỗi? Cảm ơn. – Rajat
Nếu getActivity() trả về null thì bạn chưa được đính kèm nên 'mListener' cũng sẽ là rỗng. Cách tiếp cận này tốt hơn bằng cách sử dụng 'getActivity()' vì nó đảm bảo bất kỳ hoạt động nào bạn được gắn vào để thực hiện giao diện cần thiết để làm việc với nội dung trong đoạn. –