2011-11-04 69 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,但它做錯了。這是代碼的Eclipse生成:

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

線​​崩潰,因爲cl對象不存在。如果我手動添加此行(缺少類加載器),Eclipse會自行替換我生成的版本(並且錯誤)。

任何想法?

回答

1

它看起來像一個aidl錯誤,值得在錯誤跟蹤器中提交一個錯誤。

作爲解決方法,您可以使用Bundle而不是Map。

或者您可以採取的另一種方法是實現您自己的包含地圖<>的Parcelable類,並將其用作返回類型。

+0

僅供參考,我剛剛提出了一個問題:http://code.google.com/p/android/issues/detail?id=26841 – CommonsWare