2011-11-04 68 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