您的位置:首页 > 移动开发 > Android开发

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中利用相反的操作就可以把剪切板传递过来的字符串还原成类了:
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){

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: