2010-07-19 35 views
37

Tôi đang cố gắng để tạo ra định nghĩa một lớp ứng dụng tùy chỉnh như sau:Android: java.lang.IllegalAccessException khi cố gắng sử dụng một tùy chỉnh "Ứng dụng" lớp

  1. tạo một lớp con trống của Ứng dụng gọi MyApp
  2. trong biểu hiện, xác định android :: tên cho ứng dụng của tôi: <application android:name=".MyApp" ...

Tuy nhiên, khi tôi cố gắng để chạy ứng dụng của tôi, tôi nhận được: java.lang.RuntimeException: Unable to instantiate application com.test.MyApp java.lang.IllegalAccessException: access to class not allowed

Trả lời

100

Đảm bảo lớp tùy chỉnh của bạn là public, có một hàm tạokhông đối số và chuỗi các hàm tạo cho hàm tạo của lớp bậc trên.

+2

Tôi đã gặp một ngoại lệ tương tự khi tôi đang cố bắt đầu một dịch vụ. Hóa ra là lớp dịch vụ vô tình gói riêng tư và do đó giải pháp của bạn đã giúp tôi tìm ra vấn đề, cảm ơn! – JonnyBoy

2

Tôi đồng ý với CommonsWare. Nếu bạn mở rộng android.app.Application để xác định ứng dụng tùy chỉnh cho dự án của bạn, hãy đảm bảo rằng bạn đã đánh dấu lớp của bạn là công thức xây dựng công khai và không công khai.

Tuy nhiên, trên android.app.Application API đề cập rằng, Thường không cần phải phân lớp Ứng dụng. Trong hầu hết các trường hợp, các trình đơn tĩnh có thể cung cấp chức năng tương tự theo cách mô đun hơn.

Hy vọng điều này sẽ hữu ích.

Chúc mừng.

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