2011-11-04 13 views
5

Ho definito un file AIDL con la mia interfaccia. Qualcosa di simile a questo:Generatore di raccoglitori Android guasto

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

automaticamente, Eclipse genera la cartella IResplugin.java in generazione, ma lo fa male. Questo è il codice 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 linea _result = _replu.readHashMap(cl) crash perché l'oggetto cl non esiste. Se aggiungo questa riga manualmente (manca un programma di caricamento di classe), Eclipse sostituisce la mia versione per una generata da sola (e di nuovo, errata).

Qualche idea?

risposta

1

Sembra un bug un aiuto, che varrebbe la pena archiviare un bug nel bug tracker per.

Come soluzione, è possibile utilizzare Bundle anziché Map.

Oppure un altro approccio che è possibile adottare è implementare la propria classe Parcelable che contiene la mappa <> e utilizzarla come tipo di ritorno.

+0

FYI, ho appena archiviato un problema: http://code.google.com/p/android/issues/detail?id=26841 – CommonsWare