2011-12-14 18 views
6

Tôi muốn chia sẻ một giao diện qua AIDL với các ứng dụng khách. Tôi đã nhận được lỗi thời gian biên dịch. Đoạn mã là: -Có thể sử dụng kế thừa trong giao diện AIDL không?

interface ChildListener extends ParentListener { 

    public void onUpdate(Class1 c1); 
} 

AIDL Set (Tất cả trong cùng một gói) ->

ChildListener.aidl - Chứa các mã trên.

Class1.aidl - Tuyên bố Class1 thành bưu kiện. Định nghĩa của Class1 thực hiện parcelable.

ParentListener.aidl - Khai báo ParentListener.

lỗi ->

Tôi nhận được biên dịch lỗi thời gian (dịch vụ khi biên dịch)

1. syntax error don't know what to do with "extends" 
2. syntax error don't know what to do with "ParentListener " 

Dường như chúng ta không thể sử dụng thừa kế trong giao diện AIDL? Hay là tôi đang thiếu cái gì đó ở đây. Bất kỳ con trỏ sẽ được đánh giá cao.

Trân trọng

+0

Có ai đó đã gặp lỗi như vậy trước đây không? – Robin

Trả lời

2

Bạn không thể sử dụng khi bạn khai báo giao diện trợ giúp. Giao diện Aidl có định dạng đặc biệt. Nó thậm chí không tương ứng với khai báo giao diện java.

Nếu bạn chỉ định những gì bạn muốn làm, chúng tôi sẽ cố gắng chỉ cho bạn cách giải quyết vấn đề.

+0

Có, giao diện aidl không hỗ trợ kế thừa. Tôi đã tìm ra điều đó. Cảm ơn câu trả lời. Đối với bất kỳ ai muốn sử dụng aidl ---> 1). đối với các lớp dữ liệu, khi bạn tạo một lớp có thể chuyển nhượng, bạn có thể xử lý các thành viên dữ liệu cha trong các trường writeToParcel & static CREATOR. 2). Đối với giao diện, hãy bỏ tất cả thừa kế (nếu bạn đang cố gắng sử dụng lại thiết kế hiện có trong aidl) để lộ cơ chế chia sẻ các lớp dữ liệu theo cách đơn giản nhất có thể. – Robin