Tôi đã xác định tệp AIDL bằng giao diện của mình. Một cái gì đó như thế này:Trình tạo trình kết nối Android không thành công
interface IResPlugin {
int discoverType();
Map onClick(in int id, in Map state);
int getLayoutId(in int option);
int getMeasures();
String getName();
}
Tự động, Eclipse tạo IResplugin.java trong thư mục gen, nhưng nó sai. Đây là mã Eclipse tạo:
public java.util.Map onClick(int id, java.util.Map state) throws android.os.RemoteException
{
android.os.Parcel _data = android.os.Parcel.obtain();
android.os.Parcel _reply = android.os.Parcel.obtain();
java.util.Map _result;
try {
_data.writeInterfaceToken(DESCRIPTOR);
_data.writeInt(id);
_data.writeMap(state);
mRemote.transact(Stub.TRANSACTION_onClick, _data, _reply, 0);
_reply.readException();
_result = _reply.readHashMap(cl);
}
finally {
_reply.recycle();
_data.recycle();
}
return _result;
}
Dòng _result = _replu.readHashMap(cl)
tai nạn vì đối tượng cl
không tồn tại. Nếu tôi thêm dòng này theo cách thủ công (một trình nạp lớp bị thiếu), Eclipse sẽ thay thế phiên bản của tôi cho bản thân được tạo ra (và một lần nữa, sai).
Bất kỳ ý tưởng nào?
FYI, tôi vừa gửi một vấn đề: http://code.google.com/p/android/issues/detail?id=26841 – CommonsWare