Tôi có một dự án (trong Eclipse) mà tôi đã biến thành Thư viện dự án Android để tái sử dụng một số mã trong một dự án tương tự khác. Tôi nghĩ rằng tôi đã bắn mình trong bàn chân tuy nhiên như tôi nhận được lỗi:Ứng dụng mở rộng lớp học trong thư viện dự án Android?
Unable to start activity ComponentInfo{com.test.scroller1/com.lib.scrolltest.ScrollTestActivity}: java.lang.ClassCastException: android.app.Application cannot be cast to com.lib.scrolltest.resAppVars
com.lib.scrolltest là Dự án Thư viện của tôi mà instantiates một lớp mở rộng ứng dụng (resAppVars). Trong phương thức onCreate() Tôi gọi:
mRav = (resAppVars) getApplicationContext();
Bằng cách này, tôi có thể sử dụng các phương pháp trong đối tượng mRav mà nếu không sẽ có rất nhiều mã trùng lặp trong các lớp khác (ví dụ như đi qua một truy vấn đến một tuyên bố chọn chung trả về một ArrayList các kết quả).
Sự cố ở đây là gì? Có vẻ như tôi đã đạt đến giới hạn trong cách tôi đã triển khai lớp Ứng dụng.
Cảm ơn nhưng các biến tĩnh (đơn) không phải là cách tốt nhất trong Android. Các vars tĩnh có thể được khởi tạo thành các giá trị mặc định trong một số trường hợp của vòng đời ứng dụng. http://stackoverflow.com/questions/2475978/using-static-variables-in-android http://electronicvendor.com/using-static-variables-in-android/ Tôi đánh giá cao việc bạn dành thời gian để trả lời. – wufoo
Theo như tôi biết, một singleton sẽ tồn tại trong suốt quá trình của ứng dụng của bạn. Quá trình này tồn tại ít nhất là miễn là bất kỳ thành phần không bị phá hủy nào (hoạt động, dịch vụ, v.v.) trong ứng dụng của bạn. –
@wufoo Tôi vẫn không hiểu tại sao các trình đơn tĩnh là xấu. Ý tôi là, bản thân tài liệu Android nói để sử dụng chúng thay vì phân lớp con của lớp Ứng dụng. Làm thế nào nó có thể được như vậy xấu ?? –