在网上搜了半天,真要骂人了,全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类型的对象呢?
请各位根据上述代码给小生解释一下,小生感激不尽啊!!
本来此类问题不应该上论坛上提问的,因为网上一搜遍地都是,但实际上,真正原创的也就两三篇,而且未能解决我的问题,望各位不吝赐教啊,急啊!!!!!!!!!
如果我们自己自定义的类中包跨好些类库提供的但尚未实现上述两个接口的类成员变量,那此类该怎么实现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类型的对象呢?
请各位根据上述代码给小生解释一下,小生感激不尽啊!!
本来此类问题不应该上论坛上提问的,因为网上一搜遍地都是,但实际上,真正原创的也就两三篇,而且未能解决我的问题,望各位不吝赐教啊,急啊!!!!!!!!!
解决方案 »
- ListView滚动设置
- 关于控件拖动优化的问题....
- Android Notification如何获得存储在res/raw下音乐文件的音乐效果
- AlertDialog.Builder回调问题
- jquerymobile对话框插件
- 如何检测Android应用程序的能耗?
- 当前activity在执行ondestory时Shutting down VM
- android webview 下拉刷新
- apk读取/cache分区内容
- 跪求一份英文注释的新浪微博 sdk
- 如何操作mmssms.db数据库内的threads表
- android fopen 打开dev/bloak/platform/usb20..../sda
如果是像javax.swing包中的类呢?怎么转换?
人家都封装好了,根本就不具可实施性
杯具啊!
偌大的CSDN,此问题还真处于真空状态吗
demo2,demo3 实现Serializable。
然后demo1里面可以writerSerializable()
不过下面两个读写的顺序必须一样,不一样你取会得到null。先写demo2,你就要先读demo2
public Demo1(Parcel source) {public void writeToParcel(Parcel dest, int flags) {
还传什么传阿,实现序列化太繁琐了!有些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都可以共享数据!
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;
}
}