2011-11-04 10 views
5

He definido un archivo AIDL con mi interfaz. Algo como esto:Android generador de carpetas falla

interface IResPlugin { 
    int discoverType(); 
    Map onClick(in int id, in Map state); 
    int getLayoutId(in int option); 
    int getMeasures(); 
    String getName(); 
} 

automáticamente, Eclipse genera la carpeta IResplugin.java en generación, pero lo hace mal. Este es el código Eclipse genera:

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; 
} 

La línea de _result = _replu.readHashMap(cl) accidentes porque el objeto cl no existe. Si agrego esta línea manualmente (falta un cargador de clases), Eclipse reemplaza mi versión por una generada por sí misma (y nuevamente, mal).

¿Alguna idea?

Respuesta

1

Parece un error y una ayuda, que valdría la pena presentar un error en el rastreador de errores.

Como solución alternativa, podría utilizar Bundle en lugar de Map.

O bien, otro enfoque que podría tomar es implementar su propia clase parcelable que contiene el mapa <> en su lugar, y usar eso como el tipo de devolución.

+0

FYI, Acabo de presentar un problema: http://code.google.com/p/android/issues/detail?id=26841 – CommonsWare

Cuestiones relacionadas