在网上搜了半天,真要骂人了,全TM转载复制的,没一个使用点儿的,都知道可以实现Parcelable或者Serializable接口来达到功能,而且实现上面两个接口的类成员变量也全都要是Parcelable或者Serializable接口的子类,但网上的Demo中给出的成员变量全是int、long、String、Map等基本类型或者已经实现了Serializable的引用类型。
    如果我们自己自定义的类中包跨好些类库提供的但尚未实现上述两个接口的类成员变量,那此类该怎么实现Parcelable接口呢?
比如:public class Demo1 {
private Object obj;
private Demo2 d2;
private Demo3 d3;

public Demo1() {
obj = new Object();
d2 = new Demo2();
d3 = new Demo3();
}
}public class Demo2 {
private Object obj1;
private object obj2;
}public class Demo3 {
private Object obj1;
private Object obj2
}
那么Demo1该怎样实现Parcelable接口,才可以在两个Activity之间传递时,可以正常用intent.putExtra("Demo1",parcelable);来传递Demo1类型的对象呢?
请各位根据上述代码给小生解释一下,小生感激不尽啊!!
本来此类问题不应该上论坛上提问的,因为网上一搜遍地都是,但实际上,真正原创的也就两三篇,而且未能解决我的问题,望各位不吝赐教啊,急啊!!!!!!!!!

解决方案 »

  1.   

    你自定义的类型直接转为字节数组,传绝对通用,堪比object,哈哈
      

  2.   

    http://ghostfromheaven.javaeye.com/blog/752565
      

  3.   


    如果是像javax.swing包中的类呢?怎么转换?
    人家都封装好了,根本就不具可实施性
      

  4.   

    android 支持 javax.swing 么?不支持的吧。
      

  5.   

    此贴算是散分吗?
    杯具啊!
    偌大的CSDN,此问题还真处于真空状态吗
      

  6.   

    写两个类继承Demo2,Demo3,并实现Parcelable接口,Demo1中使用新写的两个类。
      

  7.   

    我的想法,我也没试过
    demo2,demo3 实现Serializable。
    然后demo1里面可以writerSerializable()
    不过下面两个读写的顺序必须一样,不一样你取会得到null。先写demo2,你就要先读demo2
    public Demo1(Parcel source) {public void writeToParcel(Parcel dest, int flags) {
      

  8.   

    楼主的钻研精神是值得肯定的,不过有的时候你认定的那条路可能是错误的也许你要实现的哪种方法根本就不太符合实际,这也许就是为什么你google了那么长时间都没有符合你的思路的例子,有的时候换一种思路。很多开发的人都很纠结与自己想到的某种方法,死命的要按照自己思路去实现经验之谈,请参考
      

  9.   

    真空区????????
    还传什么传阿,实现序列化太繁琐了!有些android定义的对象还没法实现序列化!
    所以最简单的办法就是 写一个class MyApplication extends Application 类!
    public class MyApplication extends Application {
    private ArrayList<WeatherStatus> wsList; public ArrayList<WeatherStatus> getWsList() {
    return wsList;
    } public synchronized void setWsList(ArrayList<WeatherStatus> wsList) {
    this.wsList = wsList;
    }}然后在AndroidManifest.xml配置:<application 
    android:name=".MyApplication"
    >
    </application>这个是全局共享的,这样可以实现任何activity或者XX都可以共享数据!
      

  10.   

    Parcelable接口最后也是通过writeXXX()往外写基本或者String、Bundle,确实用不上啊
      

  11.   

    Demo2、Demo3只是举个例子,真正编码的时候,会是包含了一些类库提供的对象类型的,所以也行不通
      

  12.   


    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;public class SerializableConvert {
    public static Object ByteToObject(byte[] bytes){ 
            java.lang.Object obj = null; 
            try{ 
            ByteArrayInputStream bi = new ByteArrayInputStream(bytes); 
            ObjectInputStream oi = new ObjectInputStream(bi); 
            obj = oi.readObject(); 
            bi.close(); 
            oi.close(); 
            } 
            catch(Exception e){ 
                e.printStackTrace(); 
            } 
            return obj; 
        } 
      
    public static byte[] ObjectToByte(Object obj) 
        { 
            byte[] bytes = null; 
            try { 
                //object to bytearray 
                ByteArrayOutputStream bo = new ByteArrayOutputStream(); 
                ObjectOutputStream oo = new ObjectOutputStream(bo); 
                oo.writeObject(obj); 
                bytes = bo.toByteArray(); 
                bo.close(); 
                oo.close();     
            } 
            catch(Exception e) {
             e.printStackTrace();
            }
    return bytes;
        }
    }