android传递数据方式3--通过剪切板传类
2015-08-31 21:34
483 查看
使用剪切板的方式不仅能传一般的数据,还可以传递类,这里承接android传递数据方式2主要介绍如何将类转成字符串后传递并还原,关于剪切板的内容在上一篇中有介绍。
1.为了测试传递类,先新建一个一个MyDate的类并实现了可序列化接口,在当中生成一个构造函数,一个set函数,一个get函数和一个toString函数:
public class MyDate implements Serializable{
private String name;
private int age;
public MyDate(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "MyDate{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}2.在MainActivity中实例化一个MyDate类,然后通过一连串数据流操作
终于将类转成了字符串形式(具体的就是【1】利用类输出流中writeObject方法将这个myDate写入一个字节数组输出流,【2】再利用字节数组输出流的toByteArray方法,将输出流转成字节数组,【3】调用Base64的静态方法encodeToString,将这个字节数据编码成字符串),然后就可以通过剪切板传递类了:
public void onClick(View v) {
MyDate myDate = new MyDate("sarah", 20);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
String base64String = "";
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(myDate);
base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager.setText(base64String);
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
startActivity(intent);
} catch (Exception e) {
}
}3.在OtherActivity中利用相反的操作就可以把剪切板传递过来的字符串还原成类了:
1.为了测试传递类,先新建一个一个MyDate的类并实现了可序列化接口,在当中生成一个构造函数,一个set函数,一个get函数和一个toString函数:
public class MyDate implements Serializable{
private String name;
private int age;
public MyDate(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "MyDate{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}2.在MainActivity中实例化一个MyDate类,然后通过一连串数据流操作
终于将类转成了字符串形式(具体的就是【1】利用类输出流中writeObject方法将这个myDate写入一个字节数组输出流,【2】再利用字节数组输出流的toByteArray方法,将输出流转成字节数组,【3】调用Base64的静态方法encodeToString,将这个字节数据编码成字符串),然后就可以通过剪切板传递类了:
public void onClick(View v) {
MyDate myDate = new MyDate("sarah", 20);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
String base64String = "";
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(myDate);
base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager.setText(base64String);
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
startActivity(intent);
} catch (Exception e) {
}
}3.在OtherActivity中利用相反的操作就可以把剪切板传递过来的字符串还原成类了:
ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); String msgString = clipboardManager.getText().toString(); byte[] base64_byte = Base64.decode(msgString, Base64.DEFAULT); ByteArrayInputStream byteArrayInputStream =new ByteArrayInputStream(base64_byte); try{ ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); MyDate myDate = (MyDate)objectInputStream.readObject(); textView.setText(myDate.toString()); }catch (Exception e){ }
相关文章推荐
- android:layout_weight属性的工作原理
- 如何调试Android中的Sqlite数据
- android传递数据方式2--通过剪切板传数据
- xml文件解析并显示到Android手机 spinner的应用
- Android 笔记 5
- Android之项目中如何用好构建神器Gradle?
- Android-调用本地方法将小写字符串转成大写字符串/NDK-JNI开发实例(四)
- Android studio入门
- Android——Day8.31
- android做新闻客户端用到得第三包
- Android的Activity跳转动画各种效果整理
- Android - 卡片式布局 Fragment 详细回顾(一)
- android中Fragment和Actvity相互跳转
- Android 仿qq聊天界面之一
- (Android Studio)添加文本框
- android开发中调用手机的豌豆荚、应用宝等市场进行评分操作,以及分享功能
- Android客户端通过socket与服务器通信
- (4.2.16.5)Android判断应用或Activity是否存在
- android studio一个module依赖另外一个module
- 0831Android基础自定义Notification+仿QQ聊天界面的小Demo(上)