2011-10-31 34 views
5

Tôi có một dự án Android sử dụng một dự án thư viện (tất cả đều được xây dựng). Tôi đang sử dụng ADT/SDK v14 và tôi cần truy cập vào lớp chính trong dự án chính và gọi hàm khi hộp thoại trong dự án thư viện bị loại bỏ. Bây giờ, tôi có thể làm điều đó nếu tôi thêm một tham chiếu đến dự án chính của tôi vào dự án thư viện, nhưng đó không phải là lý tưởng. Làm thế nào để tôi có được một tham chiếu đến một lớp trong dự án chính của tôi từ một lớp trong dự án thư viện?Truy cập vào lớp dự án chính từ một lớp thư viện

Đây là cách nó hoạt động:

  • tôi có lớp học chính của tôi trong dự án của tôi đó là một tabhost
  • Các tabhost được các mảnh vỡ cho các tab từ dự án thư viện
  • Một trong những mảnh vỡ cho các tab khởi chạy Hộp thoại
  • Khi DialogFragment đó bị loại bỏ, tôi cần gọi hàm fillItems() trong lớp chính (đây là nơi tôi bị kẹt)

Bất cứ ai có ý tưởng nào?

Cảm ơn, Ed

+1

Từ góc độ OOP, bạn không nên giao tiếp theo cách đó. Bạn không muốn các thư viện của bạn được kết hợp chặt chẽ với các dự án chính của bạn; họ sẽ nhanh chóng trở thành "không thể chia sẻ." –

+0

Vâng, tôi biết đó không phải là cách để đi và tôi đã cố gắng để tránh nó, nhưng tôi chỉ không thể quấn quanh đầu của tôi xung quanh những gì tôi cần phải làm. Câu trả lời dưới đây là những gì tôi cần để có được nó. Cảm ơn. – ssuperz28

Trả lời

5

Làm thế nào để có được một tham chiếu đến một lớp học trong dự án chính của tôi từ một lớp học trong dự án thư viện?

Lý tưởng nhất là bạn không.

Thay vào đó, bạn:

  1. Xác định một giao diện trong thư viện có chứa các phương pháp bạn muốn để gọi mà thực hiện xuất phát từ dự án chính
  2. Thực hiện rằng giao diện trên một số lớp có khả năng trong dự án chính của bạn
  3. Cung cấp việc triển khai cho thư viện thông qua một số setter hoặc thông qua đối số hàm tạo
  4. Yêu cầu thư viện gọi phương thức thực hiện giao diện khi cần
  5. Đảm bảo bạn không giới thiệu bất kỳ vấn đề thu gom rác thải nào bằng cách thực hiện tất cả các điều này

Cách duy nhất để tham chiếu đến một lớp trong dự án chính của tôi từ một lớp trong dự án thư viện "là thông qua sự phản chiếu, chậm và làm cho mã khó duy trì.

+0

Cảm ơn bạn! Tôi biết tôi đã suy nghĩ về điều này. Dựa trên những gì bạn đã nói ở trên, tôi đã tạo một người nghe toàn cầu trong thư viện và đăng ký nó trong lớp học chính của mình và bây giờ tôi có thể gọi chức năng của mình. Tôi không nghĩ rằng sẽ có bất kỳ vấn đề GC với điều đó, phải không? Có vẻ khá hiệu quả. Tôi sử dụng mẫu của bạn tất cả các thời gian, họ đã giúp tôi ra khỏi một vài dilemas. Cảm ơn! – ssuperz28

+0

@ ssuperz28: "Tôi không nghĩ sẽ có bất kỳ vấn đề GC nào với điều đó, đúng không?" - Tôi không có cách nào để nói, xin lỗi. – CommonsWare

Các vấn đề liên quan