2013-09-30 24 views
6

Khi tôi tạo một tuỳ chỉnh View, trong một số trường hợp tôi cần truyền lớp Context truyền qua các nhà xây dựng cho lớp Activity, để làm một số nhiệm vụ thích thổi phồng một View trực tiếp bên trong lớp tùy chỉnh View của tôi, tôi nhận được lỗi sau:Cách khắc phục "java.lang.ClassCastException: com.android.layoutlib.bridge.android.BridgeContext không thể truyền sang ngoại lệ android.app.Activity"

java.lang.ClassCastException: com.android.layoutlib.bridge.android.BridgeContext cannot be cast to android.app.Activity 

Đây là dòng ném lỗi này:

View headerView = ((Activity) context).getLayoutInflater().inflate(R.layout.fragment_history_list_header, null); 

Dường như lỗi này chỉ xảy ra khi Eclipse cố gắng thổi phồng khung nhìn được hiển thị trong trình soạn thảo XML (không xảy ra trong thời gian chạy).

Có ai đó biết cách khắc phục không?

Xin cảm ơn trước.

Trả lời

7

Thay đổi cuộc gọi thành các mục sau. Lý do bạn nhận được một ngoại lệ lớp học là vì BridgeContext không phải là loại Hoạt động.

View headerView = LayoutInflater.from(context).inflate(R.layout.fragment_history_list_header, null); 
+0

Vấn đề tương tự đối với tôi. 'if (((Activity) getContext()). isTaskRoot())' là dòng gây ra vấn đề của tôi, mà không được giải quyết bởi sửa chữa inflater (cũng khá hữu ích) của bạn. Tôi sẽ trở lại nếu tôi tìm thấy một giải pháp ... –

+0

Bạn đã tìm ra giải pháp chưa? @ WilliamT.Mallard Cảm ơn – sipi

+4

Sắp xếp. Thêm một điều kobyashi maru. Tôi chỉ thấy vấn đề ngữ cảnh cầu trong trình soạn thảo đồ họa ADT trong Eclipse, và đoán rằng lỗi là từ trình soạn thảo đang cố gắng thực thi mã cho chế độ xem tùy chỉnh và không phải vấn đề không thể thổi phồng mà tôi gặp phải khi chạy Để sử dụng trình soạn thảo bố trí, tôi đã sử dụng 'if (! View.isInEditMode()) {}' để bao quanh bất kỳ mã phụ thuộc ngữ cảnh nào. xem trước là không đẹp, nhưng nó cho phép tôi vẫn nhìn thấy các điều khiển khác –

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