2011-11-04 13 views
5

自分のインターフェースでAIDLファイルを定義しました。このような何か:Androidバインダージェネレータが失敗します

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

自動的に、EclipseはGENフォルダにIResplugin.javaを生成し、それはそれは間違っていません。 clオブジェクトが存在しないため

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

線​​クラッシュ:これはEclipseが生成されるコードです。この行を手動で追加すると(クラスローダーが見つからない)、Eclipseは自分自身のバージョンを自分自身で置き換えます(また、間違っています)。

アイデア?

答えて

1

これはbuglのように見えますが、それはバグトラッカーにバグを報告する価値があります。

回避策として、マップの代わりにバンドルを使用できます。

代わりに、Map <>を含む独自のParcelableクラスを実装し、それを戻り値の型として使用することもできます。

+0

FYI、問題を提起しました:http://code.google.com/p/android/issues/detail?id=26841 – CommonsWare

関連する問題