AIDLによる通信でBundleにParcelableをセットするとBadParcelableException(その2)
デバッグできないスレッドで発生しているようだが(BinderThread?)スタックトレースを見るに、以下で例外が発生しているのは間違いないようだ。
public finalT readParcelable(ClassLoader loader) { String name = readString(); if (name == null) { return null; } Parcelable.Creator creator; synchronized (mCreators) { HashMap map = mCreators.get(loader); if (map == null) { map = new HashMap (); mCreators.put(loader, map); } creator = map.get(name); if (creator == null) { try { Class c = loader == null ? Class.forName(name) : Class.forName(name, true, loader); Field f = c.getField("CREATOR"); creator = (Parcelable.Creator)f.get(null); } catch (IllegalAccessException e) { Log.e("Parcel", "Class not found when unmarshalling: " + name + ", e: " + e); throw new BadParcelableException( "IllegalAccessException when unmarshalling: " + name); } catch (ClassNotFoundException e) { //ビンゴ Log.e("Parcel", "Class not found when unmarshalling: " + name + ", e: " + e); throw new BadParcelableException( "ClassNotFoundException when unmarshalling: " + name); } :
さて、そうなるとやはり嫌な嫌なクラスローダ関連かな。